【问题标题】:NodeJS - How to resolve “Cannot find module” error on local modules?NodeJS - 如何解决本地模块上的“找不到模块”错误?
【发布时间】:2015-06-21 06:41:01
【问题描述】:

我知道最好的 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 make 我的节点模块不在路径中。 如何通过node <module_name> 运行我的 git 克隆本地模块来解决这个问题?

【问题讨论】:

  • ./node_modules/.bin/http-server 对我来说似乎不合适。它通常在路径中有包名。例如,./node_modules/http-server/.bin/http-server
  • ./node_modules/.bin/http-server./node_modules/http-server/.bin/http-server 都适合我。但是没有http-server 没有。

标签: node.js npm


【解决方案1】:

你问的咒语不起作用。 node 可执行文件需要一个指向要执行的 javascript 文件的路径。路径可以是相对于当前工作目录的,也可以是绝对的,仅此而已。它不像 require 在 node.js 程序中那样搜索 node_modules 或 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-05
    • 2021-04-08
    • 2022-07-22
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 2020-11-27
    • 2017-12-06
    相关资源
    最近更新 更多