找不到模块数据竞赛提供程序



我有一个简单的nodejs应用程序,它正在抛出"Cannot find module './build/Release/DTraceProviderBindings'"。我在网上查了一下,看起来很多人在windows上使用restify时都有同样的问题(我的情况是,我在windows 10上使用restify)。显然,dtrace提供程序是restify的一个可选模块,windows中没有它的版本。所以,到目前为止我尝试了什么:

  1. 将节点更新到v6.2.0
  2. 卸载所有模块并运行npm install --no-optional
  3. 仅卸载restify并运行npm install restify --no-optional
  4. 而我最绝望的举动是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后(当重新安装节点模块不起作用时),这对我有效:

  1. 安装并保存dtrace提供程序

    $ npm install dtrace-provider --save
    
  2. 删除"node_modules"文件夹

  3. 重新安装节点模块

    $ npm install
    

在将您的尝试与另一个关于restify的Github项目问题的解决方案结合起来之前,我发现了这个线程(https://github.com/restify/node-restify/issues/1093)并且尽可能地简化。

我最近在节点6.11.1上也遇到了这个错误。我运行了npm rebuild dtrace-provider,这就解决了问题。

restify团队采用了一种方法,通过要求在try/catch块上加载模块来加载模块。您应该忽略异常。

我成功地完成了以下(详细的)序列:

  1. 调整我的路径,使其没有空格
  2. rm -rf node_modules
  3. rm -rf ~/Library/Caches/node-gyp/
  4. npm cache clean --force
  5. V=1 npm install -S dtrace-provider@0.8.8 --python=python2.7(重复此步骤,边进行边解决,直到安装完全成功……如果失败,请检查版本-我曾在某个时候构建过流氓dtrace-provider@0.6.0)
  6. npm install
  7. 在这一点上,一切都应该安装干净,我祝贺自己做得很好。然后我执行了我的代码,仍然得到了DTraceProviderBindings错误。原因是嵌套的依赖项与错误版本的dtrace提供程序(尤其是bunyan)有关
  8. 要确认,请执行npm list | grep dtrace -B6
  9. 如果有低于0.8.8的内容,请按照How do I override nested NPM dependency version?中的方法编辑package-lock.json?。将dtrace-providerrequires替换为dependencies,并更新版本
  10. 回头把一切都清理干净:rm -rf node_modules
  11. 然后,再次,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

最新更新