首页 > 解决方案 > 全局安装时找不到节点快递模块

问题描述

我的节点应用程序目录位于 /usr/node/express-test/app.js

我按照这个线程设置了我的环境,这样我就可以让一个自由职业者进来并在我们的服务器上全局安装 npm 包,而无需访问 sudo。

如何在没有 root 的情况下全局 npm 安装

我检查了我的 NODE_PATH... 对我来说看起来不错。

echo $NODE_PATH
/usr/node/.npm-packages/lib/node_modules

但是,当我尝试运行我的 app.js 时看到的错误似乎是它找不到我全局安装的 express 模块

app.js
/usr/node/express-test# node app.js
internal/modules/cjs/loader.js:983
  throw err;
  ^

    Error: Cannot find module 'express'
    Require stack:
    - /usr/node/express-test/app.js
        at Function.Module._resolveFilename (internal/modules/cjs/loader.js:980:15)
        at Function.Module._load (internal/modules/cjs/loader.js:862:27)
        at Module.require (internal/modules/cjs/loader.js:1042:19)
        at require (internal/modules/cjs/helpers.js:77:18)
        at Object.<anonymous> (/usr/node/express-test/app.js:2:15)
        at Module._compile (internal/modules/cjs/loader.js:1156:30)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)
        at Module.load (internal/modules/cjs/loader.js:1000:32)
        at Function.Module._load (internal/modules/cjs/loader.js:899:14)
        at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) {
      code: 'MODULE_NOT_FOUND',
      requireStack: [ '/usr/node/express-test/app.js' ]

}

请问可能是什么问题的想法?

标签: node.js

解决方案


我对此的建议:

  1. 首先,不要安装 express 或任何其他包作为全局放置包package.json并运行npm installnpm install --save express将包保存到本地 node_modules 并在 package.json 中列出,在 git 中跟踪package.json&package-lock.json以便它可以在其他地方,这样,如果你转移到一些新的虚拟机,你不需要再次安装全局包,你可以做npm install或做得更好npm ci,这一切都可以工作。
  2. 其次,如果你还想使用全局包,去/usr/node/.npm-packages/lib/node_modules看看你是否可以在express那里找到文件夹

推荐阅读