NodeJS - 如何解决本地模块上的“无法找到模块”错误?

时间:2015-04-15 10:34:13

标签: node.js npm

我知道最好的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 install会使我的节点模块不在路径中。 我如何通过node <module_name>将git-cloned本地模块运行?

1 个答案:

答案 0 :(得分:2)

你问的咒语是行不通的。 node可执行文件需要执行javascript文件的路径。路径可以相对于当前工作目录或绝对,但就是这样。它不会像node_modules那样在node.js程序中搜索require或NODE_PATH。

当您运行./node_modules/.bin/http-server时,您的shell正在执行该文件,该文件以诸如#!/usr/bin/env node之类的shebang行开头,它处理正在运行的节点并为您传递http-server文件的路径

如果您希望node http-server能够工作,请在make-modules目录中创建一个符号链接:cd make-modules && ln -nsf ./node_modules/.bin/http-server