node.js - 无法找到模块 './collection/batch/unordered' - Heroku 上的 Node JS

标签 node.js mongodb heroku

我有一个问题让我发疯了两天。我在heroku上部署了一个运行良好的 Node 应用程序。两天前,我更新了我的模块(我不能 100% 确定它与我的问题直接相关),因为我不断在日志中收到此消息:

             Error: Cannot find module './collection/batch/unordered'
                  at Function.Module._resolveFilename (module.js:338:15)
                  at Function.Module._load (module.js:280:25)
                  at Module.require (module.js:364:17)
                  at require (module.js:380:17)
                  at Object.<anonymous> (/app/node_modules/mongodb/lib/mongodb/collection.js:21:17)
                  at Module._compile (module.js:456:26)
                  at Object.Module._extensions..js (module.js:474:10)
                  at Module.load (module.js:356:32)
                  at Function.Module._load (module.js:312:12)
                  at Module.require (module.js:364:17)
              Failed to load c++ bson extension, using pure JS version

在本地,该应用程序运行良好。

我尝试将版本更改回原来的版本,但没有成功。

所以我检查了node_modules/mongodb/lib/mongodb,实际上我没有找到“batch”文件夹,因此没有找到node_modules/mongodb/lib/mongodb/collection.js文件所需的unordered.js文件。

我尝试卸载并重新安装 mongodb。批处理文件夹和 unordered.js 确实出现了。但错误仍然存​​在。如果我在 Heroku 上重新部署,批处理文件夹会再次丢失。

我现在完全不知道该尝试什么,我非常感谢一些帮助。谢谢!

编辑:

这是我的packages.json:

  {
    "name": "Killerapp",
    "version": "0.0.1",
    "private": true,
    "scripts": {
    "start": "node app.js"
   },
    "engines": {
       "node": "0.10.26" 
    },
    "dependencies": {
       "express": "3.5.1",
       "ejs" : "~0.8.5",
       "mongodb": "1.4.2",
       "mongoose": "3.8.8",
       "connect-mongo": "*", 
       "passport" : "~0.1.17",     
       "connect-flash" : "~0.1.1",   
       "bcrypt-nodejs" : "latest",
       "moment" : "latest"
       }
     }

最佳答案

您在依赖项中硬编码了 mongodb 版本是否有原因?我相信 Mongoose 会引入正确的版本......

尝试从 package.json 中删除 mongodb,从 git 中删除 node_modules,然后推送到 heroku。

关于node.js - 无法找到模块 './collection/batch/unordered' - Heroku 上的 Node JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23313804/

相关文章:

javascript - Node.js EventEmitter 无法立即发出

javascript - 如何将 mongoose ObjectId 数组转换为字符串数组?

node.js - Mongoose - 如何使用预钩子(Hook)删除来级联删除

mongodb 以前的发布日期

Heroku Pipelines : Configuration from app. json 被忽略

javascript - 尝试签署 jwt 返回未定义

javascript - 预编译 Handlebars 模板以使其发挥作用的正确方法,就像 Jade 那样

javascript - 何时在 Node.js 中使用光标

ruby-on-rails - 从使用 heroku 发送的邮件中删除 'via sendgrid.me'

mongodb - 在heroku中存储数据库连接字符串的安全方法