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