我有一个简单的nodejs应用程序正在抛出"Cannot find module './build/Release/DTraceProviderBindings'"
。我在线查看它看起来很多人在Windows上使用restify时遇到同样的问题(这是我的情况,我在Windows 10上使用restify)。显然,dtrace-provider is a optional module for restify并没有适用于Windows的版本。那么,到目前为止我尝试了什么:
npm install --no-optional
; npm install restify --no-optional
; 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"
}
答案 0 :(得分:8)
在切换到Node 6.1之后(当重新安装节点模块不起作用时)这对我有用:
安装并保存dtrace-provider
$ npm install dtrace-provider --save
删除'node_modules'文件夹
重新安装节点模块
$ npm install
我在将您的尝试与Github项目问题上的另一个解决方案结合起来之前找到了这个帖子,以求解决(https://github.com/restify/node-restify/issues/1093)并尽可能简化。
答案 1 :(得分:5)
我最近在节点6.11.1
上遇到了这个错误。
我跑了npm rebuild dtrace-provider
并解决了这个问题。
答案 2 :(得分:2)
restify团队采用了尝试通过在try / catch块上要求加载模块的方法。你应该忽略这个例外。
答案 3 :(得分:1)
我最近在节点v8.8.1上遇到了这个错误
正如@Derek所说,我运行npm rebuild dtrace-provider
并解决了问题。
答案 4 :(得分:0)
我知道这是一个老问题,但我想对其进行评论以防其他人遇到同样的问题。
我的问题是由于我的路径中有括号。
/users/karlgroves/Dropbox (Personal)/foo/bar/bat/project...
将项目移动到没有parens的路径为我工作。
您需要清除node_modules
并重新安装。
答案 5 :(得分:0)
我尝试了很多建议,但又一次犯了同样的错误 最后,我找到了解决这个问题的正确方法 转到node.js website并下载最新版本的 node.js pkg 安装完成后,重新安装软件,一切都会好的。
答案 6 :(得分:0)
tl; dr; dtrace-provider使用了node-gyp,它需要python版本> = 2.5而不是3.5
我在OSX上遇到过这个问题,发现了一个显示使用环境变量的帖子
V=/Users/your_user/your_project npm i dtrace-provider
这让我知道node-gyp
依赖于未能构建的内容......一旦我知道该模块的问题,我就可以将注意力集中在排查node-gyp
上。
这导致一些日志输出表明我的python版本3.5
不受支持,并且它需要版本>= 2.5
。
去了并下载了python 2.7.x
并检查了/usr/bin/python 2.7.x
以确保它在那里。卸载最终需要此模块的节点模块,然后使用npm cache clean
然后重新安装模块,这次它似乎选择了正确的python版本才能构建。
希望这有助于某人=)
答案 7 :(得分:0)
我成功完成了以下(精心制作的)序列:
rm -rf node_modules
rm -rf ~/Library/Caches/node-gyp/
V=1 npm install -S dtrace-provider@0.8.8 --python=python2.7
(重复此步骤,逐步解决,直到安装完全成功……如果失败,请检查版本-我曾在某个点上构建了dtrace-provider@0.6.0流氓)npm install
DTraceProviderBindings
错误。原因是嵌套的依赖项带有错误版本的dtrace-provider(尤其是bunyan)。npm list | grep dtrace -B6
。0.8.8
,请按照How do I override nested NPM dependency versions?中的方法编辑package-lock.json
。将{{1}的requires
替换为dependencies
,并更新版本。dtrace-provider
rm -rf node_modules
我不得不迭代npm install --python=python2.7
几次,因为我以为我抓到了所有东西,但是没有。
关键点是使用必需的python版本,具有unix友好的路径并查找所有嵌套的依赖项。 python版本的问题产生了一个大的混乱错误,而空间问题则产生了更多的错误。
答案 8 :(得分:0)
我设法通过运行此命令使它正常工作
npm install --python=python2.7