我有一个简单的nodejs应用程序,它正在抛出"Cannot find module './build/Release/DTraceProviderBindings'"
。我在网上查了一下,看起来很多人在windows上使用restify时都有同样的问题(我的情况是,我在windows 10上使用restify)。显然,dtrace提供程序是restify的一个可选模块,windows中没有它的版本。所以,到目前为止我尝试了什么:
- 将节点更新到v6.2.0
- 卸载所有模块并运行
npm install --no-optional
- 仅卸载restify并运行
npm install restify --no-optional
- 而我最绝望的举动是npm安装
dtrace-provider
我在github问题上尝试的所有内容,我在使用其他模块的OSX用户身上都看到了同样的错误。不知道还能尝试什么。
注意:这个异常不会停止我的应用程序,甚至不会在控制台上打印错误,我只是注意到这是使用调试器发生的,换句话说,我的应用软件运行良好,但这种情况一直在后台发生。
我正在使用的其他模块列表:
"dependencies": {
"restify": "latest",
"request": ">=2.11.1",
"cheerio": ">=0.10.0",
"xml2js": ">=0.2.0",
"botbuilder": "^0.11.1",
"applicationinsights": "latest"
}
在切换到节点6.1后(当重新安装节点模块不起作用时),这对我有效:
-
安装并保存dtrace提供程序
$ npm install dtrace-provider --save
-
删除"node_modules"文件夹
-
重新安装节点模块
$ npm install
在将您的尝试与另一个关于restify的Github项目问题的解决方案结合起来之前,我发现了这个线程(https://github.com/restify/node-restify/issues/1093)并且尽可能地简化。
我最近在节点6.11.1
上也遇到了这个错误。我运行了npm rebuild dtrace-provider
,这就解决了问题。
restify团队采用了一种方法,通过要求在try/catch块上加载模块来加载模块。您应该忽略异常。
我成功地完成了以下(详细的)序列:
- 调整我的路径,使其没有空格
rm -rf node_modules
rm -rf ~/Library/Caches/node-gyp/
npm cache clean --force
V=1 npm install -S dtrace-provider@0.8.8 --python=python2.7
(重复此步骤,边进行边解决,直到安装完全成功……如果失败,请检查版本-我曾在某个时候构建过流氓dtrace-provider@0.6.0
)npm install
- 在这一点上,一切都应该安装干净,我祝贺自己做得很好。然后我执行了我的代码,仍然得到了
DTraceProviderBindings
错误。原因是嵌套的依赖项与错误版本的dtrace提供程序(尤其是bunyan)有关 - 要确认,请执行
npm list | grep dtrace -B6
- 如果有低于
0.8.8
的内容,请按照How do I override nested NPM dependency version?中的方法编辑package-lock.json
?。将dtrace-provider
的requires
替换为dependencies
,并更新版本 - 回头把一切都清理干净:
rm -rf node_modules
- 然后,再次,
npm install --python=python2.7
我不得不循环npm list
几次,因为我认为我已经抓住了所有东西,但我没有。
关键是要使用所需版本的python,有一个unix友好的路径,并查找所有嵌套的依赖项。python版本问题导致了一个大的混乱错误,空间问题导致了更容易出错的错误。
我知道这是一个老问题,但我想对此发表评论,以防其他人也有同样的问题。
我的问题是由于路径中有括号引起的。/users/karlgroves/Dropbox (Personal)/foo/bar/bat/project...
将项目移到没有parens的路径对我来说很有效。您需要清除node_modules
,然后重新安装。
我最近在节点v8.8.1上也遇到了这个错误正如@Derek提到的,我运行了npm rebuild dtrace-provider
,这就解决了问题。
tl;drdtrace提供程序使用了节点gyp,该节点要求python版本>=2.5和NOT 3.5
我在OSX上遇到了这个问题,并发现了一篇关于使用环境变量的帖子V=/Users/your_user/your_project npm i dtrace-provider
这让我知道对node-gyp
的依赖无法构建。。。一旦我知道这个模块有问题,我就可以把注意力集中在node-gyp
的故障排除上。
这导致一些日志输出表明我的python版本3.5
不受支持,并且需要版本>= 2.5
。
去下载python2.7.x
并检查/usr/bin/python 2.7.x
以确保它在那里。卸载了最终需要该模块的节点模块,然后使用npm cache clean
,然后重新安装了该模块,这一次它似乎选择了能够构建的正确python版本。
希望这能帮助到别人
我尝试了很多建议,但再次出现相同的错误
最后,我找到了解决这个问题的正确方法
访问node.js网站并下载node.js pkg的最新版本
安装后,重新安装您的软件,一切都会好起来的。
我通过运行命令成功地实现了这一点
npm install --python=python2.7