从GitHub下载模块并按照说明进行构建后,我尝试使用以下方法将其拉入现有项目:

> npm install ../faye

这似乎起到了作用:

> npm list
/home/dave/src/server
└─┬ faye@0.7.1
  ├── cookiejar@1.3.0
  ├── hiredis@0.1.13
  └── redis@0.7.1

但是Node.js找不到模块:

> node app.js
node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: Cannot find module 'faye'
    at Function._resolveFilename (module.js:334:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at Object.<anonymous> (/home/dave/src/server/app.js:2:12)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:470:10)

我真的很想了解这里发生了什么,但我有点不知所措,不知道下一步该去哪里。有什么建议吗?


当前回答

如果使用nvm,请检查绑定到其他库的现有node_module是否编译为正确的node.js版本。

我也犯了同样的错误。原因如下:我们使用nvm是因为我们在一台服务器上运行两个应用程序,一个需要Node.js 5.6,因为它使用Node gd(目前不在Node.js 6上运行),另一个需要Node.js 6。Node.js 6是apt-get安装。

我们还使用pm2工具进行部署。

因此,默认设置是当nvm未生效时pm2进程启动,因此它使用Node.js(版本6)的apt-get安装。因此,主pm2守护进程从Node.js 6开始。如果我在fork模式下运行应用程序,它们将在单独的进程中启动,并且nvm设置生效。当我以集群模式运行应用程序时,它们继承了非nvm环境。

因此,当我尝试切换到集群模式时,应用程序未能启动,因为为5.6编译的绑定失败,并显示此消息。

我通过在nvm设置生效时重新启动pm2解决了这个问题。此外,还应修复启动脚本。

其他回答

逐步运行以下命令。它解决了我的问题:

npm缓存清理–强制rm package-lock.jsonrm-r节点模块npm i--保存--旧版对等deps

最终对我有用的是确保在webpack配置中包含任何合并深度依赖项作为外部项:

externals: {
    puppeteer: 'require("puppeteer")',
}

并将package.json中的node_modules路径声明为“extraResource”。

"extraResources": [
    "node_modules/puppeteer,
}

如果所有其他方法都不适合你。。。尝试

npm link package_name

e.g

npm link webpack
npm link autoprefixer

e.t.c公司

我昨天经历了这个错误。我花了一段时间才意识到package.json中的主条目指向了我移动的文件。一旦我更新,错误消失了,包工作了。

npm install --save module_name

例如,如果错误为:

{[错误:找不到模块“/root/.npm/form data”]代码:“module_NOT_FOUND”}

然后可以通过执行命令npm install--save form data来解决此问题。