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

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


当前回答

删除node/npm,然后重新安装稳定的(不是最新的)版本对我很有用。

sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*}

https://nodejs.org/en/download/

其他回答

在我的案例中,我使用UNMET PEER DEPENDENCY redux@^3.0.0导致此错误消息,请查看所有模块并使用--save再次安装缺失的模块

npm install redux --save

如果您需要的模块的package.json中缺少或不正确的主字段,则可能会遇到此错误。虽然模块本身已安装,但npm/node必须使用单个.js文件作为模块的入口点。如果主字段不在,则默认在模块的文件夹中查找index.js。如果模块的主文件不名为index.js,它将无法要求它。

在将基于浏览器的模块转换为CommonJS必需模块时发现;browserify并不关心缺少的主字段,因此错误没有被注意到。

从项目中删除node_module根文件夹(例如:myApp)。转到myApp文件夹,然后从终端键入以下命令

>myApp>npm install

它将安装项目所需的所有依赖模块。

在我的情况下,我没有使用正确版本的nvm。

我有一个非常类似的问题。删除整个node_modules文件夹并重新安装对我很有用:

rm -rf node_modules
npm install