nav*_*vra 155 javascript windows mongodb node.js angularjs
我收到以下错误:
{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
js-bson: Failed to load c++ bson extension, using pure JS version
Run Code Online (Sandbox Code Playgroud)
这是我的版本细节:
操作系统:Windows 7
MongoDB:2.6.5
节点:0.12.0
在我发布这个问题之前,我已经尝试过这些东西.
我去了\node-modules\mongoose\node-modules\mongodb\node-modules\bson文件夹,并从绑定GYP文件下的变化做出'include_dirs': [ '<!(node -e "require(\'nan\')")' ]
对
'include_dirs': ["<!(nodejs -p -e \"require('path').dirname(require.resolve('nan'))\")"]
跑这个命令 npm install -g node-gyp
我已经将mongoose版本更新到3.8.21里面 package.json
什么都行不通.请建议
any*_*asa 164
在npm模块mongodb中查找:
.. \node_modules\MongoDB的\node_modules\BSON \分机\ index.js
在catch块中更改js版本的路径:
bson = require('../build/Release/bson');
Run Code Online (Sandbox Code Playgroud)
至:
bson = require('../browser_build/bson');
Run Code Online (Sandbox Code Playgroud)
或者复制文件:
.. \node_modules\BSON \建立\发布\ BSON
从:
.. \node_modules\BSON\browser_build\BSON
Mat*_*est 70
我今天有这个问题(2016年2月19日),我只是通过安装最新版本的Mongoose解决了这个问题.试着把它放在你的package.json中:
"mongoose": "~4.4"
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.为我解决了!
sal*_*nap 18
问题是当您通过npm安装mongoose时,它假定您已在Windows上安装了python并尝试构建所需的库.由于你没有python,它会跳过构建阶段并发出警告.但是当您启动应用程序时,所需的模块不存在,因此您会收到此错误.
为了做正确的事情首先在您的计算机上安装python(版本2.7):https://www.python.org/downloads/或者如果你已经安装chockolatey只需键入choco install python2.
然后确保你的python变量已设置.您可以在命令提示符下设置它,如:
SET python=D:\Python27\python.exe
Run Code Online (Sandbox Code Playgroud)
(当然你应该根据python的位置改变路径)然后安装node-gyp:
npm install -g node-gyp
Run Code Online (Sandbox Code Playgroud)
现在您可以重新安装mongoose或导致问题的任何模块:
npm install mongoose
Run Code Online (Sandbox Code Playgroud)
这次你会看到一些黄线而不是红线,但错误将消失.
Ris*_*arg 15
我通过安装mogoose版本解决了这个问题 3.8.23
npm install mongoose@3.8.23
Run Code Online (Sandbox Code Playgroud)
小智 15
这对我有用.在工作区中搜索文本:
"../build/Release/bson"
Run Code Online (Sandbox Code Playgroud)
您可能会在mongose和monk模块中找到它.
然后更换每个:
bson = require('../build/Release/bson');
Run Code Online (Sandbox Code Playgroud)
有:
bson = require('bson');
Run Code Online (Sandbox Code Playgroud)
就这样!
尝试npm install mongoose@3.8.23并替换
bson = require('../build/Release/bson');为
bson = require('../browser_build/bson'); 在node_modules/bson/ext/index.js中
这对我有用:
转到文件(在您的项目中):
node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js
并改变:
bson = require('../build/Release/bson');
至:
bson = require('bson');
参考:https://github.com/mongodb/js-bson/issues/118
安装最新版本的mongodb.
确保你的package.json使用最新版本的mongodb,然后删除node_modules/mongodb并再次执行npm install.如果您没有使用mongodb作为直接依赖项,请尝试查找使用mongdb的软件包.我用了:
find . -type f -name package.json | xargs grep mongodb
...
./sails-mongo/package.json: "mongodb": "1.4.26",
...
Run Code Online (Sandbox Code Playgroud)
所以我将./sails-mongo/package.json更新为:
"mongodb": "2.1.7",
Run Code Online (Sandbox Code Playgroud)
然后删除node_modules/mongodb并再次执行npm install.现在似乎很好.
我不喜欢目前建议的使用方式
require('../browser_build/bson')
Run Code Online (Sandbox Code Playgroud)
从查看../browser_build/bson.js,一个4k +行文件,这似乎也是一个"非本机"实现.因此虽然它不会吐出任何抱怨,但它仍然是"使用纯JS版本",这意味着性能降低.
看看https://github.com/mongodb/js-bson/issues/145和 https://github.com/mongodb/js-bson/issues/165,问题似乎是由以下原因引起的:
antoniofruci于2015年9月15日评论
我刚刚发现c ++代码已经在6个月前移出了,它现在是一个可选的依赖:bson-ext.的确,如果您安装最新版本,则不会发生错误.
所以我试图删除整个node_modules并仍然得到相同的错误.看一下node_modules/mongodb的package.json,它的版本仍然是1.4.26,而不是最新的2.1.7.
显然我的mongodb是我安装的另一个包的依赖:sails-mongo.修改sails-mongo的package.json并重做npm install终于解决了这个问题.
部署Keystone JS CMS我有同样的错误,我认为最优雅的解决方案是:
安装npm-check-updates:
root@keystonejs:~# npm install -g npm-check-updates
Run Code Online (Sandbox Code Playgroud)
在您的keystone站点目录中,package.json放置位置,检查依赖项:
debian@keystonejs:~/myproject/manalcjim$ npm-check-updates -u
Run Code Online (Sandbox Code Playgroud)
然后更新所有包:
debian@keystonejs:~/myproject/manalcjim$ npm install
Run Code Online (Sandbox Code Playgroud)
最后,如果你选择jade了模板,也许你需要jade明确地安装模块:
debian@keystonejs:~/myproject/manalcjim$ npm install jade --save
Run Code Online (Sandbox Code Playgroud)
就我而言,mongoose ( npm install mongoose)附带的位mongodb在其node_modules文件夹中有一个包的工作版本。
以下步骤为我节省了解决问题的工作:
npm install mongoosenode_modules\mongoose\node_modules\mongodb到我的根node_modules文件夹(覆盖随附的任何版本npm install mongodb)Failed to load c++ bson extension...错误(或更改代码以对问题保持沉默)明确的答案是完全错误的.所有这一切都隐藏了控制台日志语句,并且没有做任何事情来解决实际问题.你也可以闭上眼睛,它也会达到同样的效果.
这个问题是由node-gyp引起的.其目的是为某些模块(如bson)编译本机扩展.
如果它没有这样做,那么代码将回退到JS版本,并通过信息性消息告诉您:
Failed to load c++ bson extension, using pure JS version
Run Code Online (Sandbox Code Playgroud)
我假设问题实际上是关于如何编译本机C++扩展而不是看到消息所以让我们解决这个问题.
为了使node-gyp能够工作,你的node-gyp必须与你的节点和C++编译器保持同步(根据你的操作系统而不同).同样重要的是,您的模块也必须是最新的.
首先卸载并重新安装node-gyp
npm un node-gyp -g;npm i node-gyp -g
Run Code Online (Sandbox Code Playgroud)
现在,您需要完全卸载并重新安装应用程序中的任何节点模块(包括按要求安装的模块),这些节点模块具有bson.这应该照顾错误.您可以搜索'Release/bson'并找到罪魁祸首.
find node_modules/ -type 'f' -exec grep -H 'Release/bson' {} \;
Run Code Online (Sandbox Code Playgroud)
然后卸载并重新安装这些模块.
更简单的是重做整个node_modules文件夹:
rm -rf node_modules
npm cache clear
npm i
Run Code Online (Sandbox Code Playgroud)
如果您仍然遇到问题,那么1)您的模块已过期 - 检查其仓库中的问题跟踪器或2)您可能存在冲突 - 有时我们可能会有本地节点-gyp.您可以node-gyp单独运行并验证版本.
小智 5
www.spotdekho.com在新windows10机器中创建设置时,"nodemon web.js" 由于相同的错误,我无法运行命令
"错误:找不到模块'../build/Release/bson'"
通过以下步骤修复:
- 在"node_modules\bson\build \"位置内创建文件夹"Release"
- 从"node_modules\bson\browser_build"复制bson.js
- 将bson.js粘贴到"node_modules\bson\build\Release"文件夹中.
这将解决问题.
PS:我使用的是猫鼬版本4.8.8.
谢谢:),希望它可以帮助某人.
| 归档时间: |
|
| 查看次数: |
134960 次 |
| 最近记录: |