找不到模块dtrace-provider

时间:2016-05-31 15:40:38

标签: node.js visual-studio-code restify

我有一个简单的nodejs应用程序正在抛出"Cannot find module './build/Release/DTraceProviderBindings'"。我在线查看它看起来很多人在Windows上使用restify时遇到同样的问题(这是我的情况,我在Windows 10上使用restify)。显然,dtrace-provider is a optional module for restify并没有适用于Windows的版本。那么,到目前为止我尝试了什么:

  1. 将节点更新为v6.2.0;
  2. 卸载所有模块并运行npm install --no-optional;
  3. 仅卸载解析并运行npm install restify --no-optional;
  4. 我最绝望的举动npm install dtrace-provider
  5. 我在github问题上发现的所有内容,我在OSX用户和其他模块上看到了同样的错误。不知道还有什么可以尝试。

    注意:此异常不会停止我的应用程序,甚至不会在控制台上打印错误,我只是注意到这是使用调试器发生的,换句话说,我的应用程序运行正常,但这仍然在后台发生。

    我正在使用的其他模块列表:

    "dependencies": {
        "restify": "latest",
        "request":  ">=2.11.1",
        "cheerio":  ">=0.10.0",
        "xml2js":   ">=0.2.0",
        "botbuilder": "^0.11.1",
        "applicationinsights": "latest"
      }
    

9 个答案:

答案 0 :(得分:8)

在切换到Node 6.1之后(当重新安装节点模块不起作用时)这对我有用:

  1. 安装并保存dtrace-provider

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

  3. 重新安装节点模块

    $ npm install
    
  4. 我在将您的尝试与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)

我成功完成了以下(精心制作的)序列:

  1. 调整路径以没有空格
  2. rm -rf node_modules
  3. rm -rf ~/Library/Caches/node-gyp/
  4. npm缓存清理--force
  5. V=1 npm install -S dtrace-provider@0.8.8 --python=python2.7(重复此步骤,逐步解决,直到安装完全成功……如果失败,请检查版本-我曾在某个点上构建了dtrace-provider@0.6.0流氓)
  6. npm install
  7. 在这一点上,所有东西都应该干净安装,我为自己所做的出色工作表示祝贺。然后我执行了代码, still 出现了DTraceProviderBindings错误。原因是嵌套的依赖项带有错误版本的dtrace-provider(尤其是bunyan)。
  8. 要确认,请执行npm list | grep dtrace -B6
  9. 如果有什么内容低于0.8.8,请按照How do I override nested NPM dependency versions?中的方法编辑package-lock.json。将{{1}的requires替换为dependencies,并更新版本。
  10. 后退以确保一切整洁:dtrace-provider
  11. 然后再次rm -rf node_modules

我不得不迭代npm install --python=python2.7几次,因为我以为我抓到了所有东西,但是没有。

关键点是使用必需的python版本,具有unix友好的路径并查找所有嵌套的依赖项。 python版本的问题产生了一个大的混乱错误,而空间问题则产生了更多的错误。

答案 8 :(得分:0)

我设法通过运行此命令使它正常工作

npm install --python=python2.7