从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 link package_name

e.g

npm link webpack
npm link autoprefixer

e.t.c公司

其他回答

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

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

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

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

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

我可以再加一个地方检查;我尝试使用的软件包是我自己发布给私人NPM回购的另一个软件包。我忘记正确配置package.json中的“main”属性。因此,该包位于消费包的node_modules文件夹中,但我得到的是“找不到模块”。我花了几分钟才意识到自己的错误-(

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

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

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

包括如下内容:

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

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

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

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

还有啊!