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

NodeJS - How to resolve “Cannot find module” error on local modules?

我知道最好的 npm install 是使用 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 会使我的节点模块不在路径中。 我怎样才能修复我的 git 克隆的本地模块通过 node <module_name> 运行?

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

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

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