【问题标题】:bundle.js bundle.js:1 Uncaught Error: Cannot find module '/node_modules\mongodb-core\lib\topologies/../../package.json'bundle.js bundle.js:1 未捕获的错误:找不到模块'/node_modules\mongodb-core\lib\topologies/../../package.json'
【发布时间】:2016-12-28 14:22:29
【问题描述】:

我收到以下错误:

bundle.js:1 Uncaught Error: Cannot find module '/node_modules\mongodb-ore\lib\topologies/../../package.json'

这是我的版本详细信息:

操作系统:Windows10

MongoDB:2.2.16

MongoDB 核心:2.1.2

节点:6.9.2

我用过npm install bson-ext,把\node_modules\mongodb-core\node_modules\bson-ext\ext\index.js改成

try {
// Load the precompiled win32 binary
if(process.platform == "win32" && process.arch == "x64") {
  bson = require('bson');
} else if(process.platform == "win32" && process.arch == "ia32") {
  bson = require('bson');
} else {
  bson = require('bson');
}
} catch(err) {
    console.log(err)
    // Attempt to load the release bson version
    try {
        bson = require('bindings')('bson.node');
    } catch (err) {
        throw new Error("js-bson: Failed to load c++ bson extension, using       pure JS version");
    }
}

原件是:

bson = require('./win32/x64/bson');  

因为当我尝试browserify range.js > bundle.js 时,它在mongoDB-core 中找不到bson-ext module

我不确定这种操作是否会导致上述错误。

这是我的 package.json 文件:

"dependencies": {
"browserify": "^13.1.1",
"bson": "^1.0.1",
"d3": "^4.4.0",
"express": "^4.14.0",
"hbs": "^4.0.1",
"jsdom": "^9.9.1",
"mongodb": "^2.2.16",
"mongodb-core": "^2.1.2"
}

【问题讨论】:

  • 在 OSX 10.10 上看到同样的问题,node@5.9.1。我的package.json, since npm 中只有"mongodb": "^2.2.16" 应该自动安装deps。但是,我看到mongodb-core 使用带有bson-extoptionalPeerDependencies 字段,并且mongodb-core 中有几个块试图选择性地要求bson-ext。出于某种原因,本机 bson-ext 库没有在 npm 的 install 脚本上为我编译,所以我注释掉了可选的要求,......当我的应用程序编译时,我仍然在 OP 中遇到了同样的问题。 Browserify 可能无法正确解析该路径?
  • 更多:stackoverflow.com/questions/36902720/… 指向 mongodb + browserify 作为一个糟糕的组合...

标签: node.js mongodb browserify


【解决方案1】:

我还不能确认这一点,但我认为问题在于,出于安全原因,MongoDB 的 JavaScript (Node.js) 驱动程序不适合在浏览器中使用。不清楚 OP 中的问题是否是由于 Browserify 错误地解析了相对路径或其他原因,但无论首选技术是通过 Node 服务器代理对 MongoDB 实例的请求。

Mongo 在此处列出了现成的解决方案: https://docs.mongodb.com/ecosystem/tools/http-interfaces/

还要注意--rest 选项,它允许应用程序通过 URL 模式直接从数据库中读取: https://docs.mongodb.com/ecosystem/tools/http-interfaces/#simple-rest-api

正如文档所提到的,这不是安全问题的好做法,但可能有助于原型设计。

【讨论】:

  • 呃,很遗憾,Simple REST API 没有 CORS 标头,因此您不能单独使用它从浏览器查询数据库。有点没用。
  • 非常感谢!这只是问题所在。我不熟悉 Node.js,并且在我的浏览器中错误地要求 mongoDB 使用 .js 文件。几天前我第二次遇到这个问题并通过从我的.js浏览器使用的文件中删除require('mongodb').来解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-27
  • 1970-01-01
  • 2016-12-27
  • 2016-12-14
  • 2017-12-05
  • 2018-11-19
相关资源
最近更新 更多