NodeJS – 如何解决本地模块上的“无法find模块”错误?
我知道最好的npm安装是使用npm install
,但在我使用的专业服务器上是禁止的。 此外,我必须通过一个脏git clone <node_module_git_repository>
来安装我的node_modules。
通过git,我的模块被很好地复制,并通过以下方式正常运行:
node ./node_modules/.bin/http-server
但通过失败:
node http-server
我找回错误:
module.js:340 throw err; ^ Error: Cannot find module '/data/yug/projects_active/make-modules/http-server' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:935:3
我假设不做npm安装使我的节点模块不在path中。 我怎么能解决这个我git克隆的本地模块通过node <module_name>
运行?
你所问的咒语是行不通的。 node
可执行文件需要一个到一个JavaScript文件的path来执行。 path可以是相对于当前的工作目录或绝对的,但就是这样。 它不像node.js程序中的require那样searchnode_modules
或NODE_PATH。
当你运行./node_modules/.bin/http-server
你的shell正在执行这个文件,它以一个类似于#!/usr/bin/env node
的shebang行开始,它处理正在运行的节点并将它传递给http-server
文件为您。
如果您希望node http-server
工作,请在make-modules目录中创build一个符号链接: cd make-modules && ln -nsf ./node_modules/.bin/http-server
。