从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)

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


当前回答

当第一个npm安装由于某种原因(npm的SIGINT)崩溃,或者延迟太长,或者数据损坏时,就会发生这种情况。再次尝试npm安装不会解决问题。

npm第一次检查出现了问题,因此最好的选择是删除该文件并重新启动npm安装。

其他回答

在我的情况下,

npm install -D tslib @types/node

解决了我的问题,我就可以跑了

ts-node index.ts

成功地

刚刚发现了一个不寻常的场景,可能对某人有用,有点转移注意力。

我也收到了“找不到模块”错误,但奇怪的是,在我的本地(Mac托管)Node.js环境中,一切都很完美。只有当代码部署在我们的Linux服务器上时,才会出现这个问题。

好结果发现这是一个拼写错误,(显然)基于Mac的Node.js安装非常乐意忽略。

包括如下内容:

var S3Uploader = require('./S3Uploader.class');

但实际的文件名为“s3Uploader.class.js”

请注意代码和文件名之间“s”与“s”的大小写差异。

因此,如果这里的其他解决方案都没有解决您的问题,那么请仔细检查您的文件名中的字符大小写是否正确!:)

还有啊!

更改目录并指向当前项目文件夹,然后单击“npm install”。.

这将将所有依赖项和模块安装到项目文件夹中。

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

npm link package_name

e.g

npm link webpack
npm link autoprefixer

e.t.c公司

如果使用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解决了这个问题。此外,还应修复启动脚本。