【问题标题】:Cannot find module dtrace-provider找不到模块 dtrace-provider
【发布时间】:2016-09-29 17:25:18
【问题描述】:

我有一个简单的 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. 只卸载restify并运行npm install restify --no-optional;
  4. 还有我最绝望的举动 npm install 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"
  }

【问题讨论】:

  • 我遇到了同样的问题。我希望有人有解决方案。
  • 我刚刚尝试删除整个node_modules 目录,然后删除npm install --no-optional,最后似乎没有抛出错误。你试过了吗?
  • 是的,我试过了...继续为我发生
  • 你的 IDE,是 VS Code 吗?
  • @BrunoBrant 是的

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


【解决方案1】:

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

  1. 安装并保存 dtrace-provider

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

  3. 重新安装节点模块

    $ npm install
    

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

【讨论】:

  • 我希望有人会更新 dtrace-provider 模块 - 它只是在安装时在 MacOS 上喷出错误。
【解决方案2】:

restify 团队采用了一种尝试加载模块的方法,即在 try/catch 块上要求它。你应该忽略异常。

【讨论】:

    【解决方案3】:

    我知道这是一个老问题,但我想对此发表评论,以防其他人遇到与我相同的问题。

    我的问题是由于路径中有括号引起的。 /users/karlgroves/Dropbox (Personal)/foo/bar/bat/project...

    将项目移动到没有括号的路径对我有用。 您需要清除 node_modules 并重新安装。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        我尝试了很多建议,但再次遇到同样的错误。
        最后,我找到了解决这个问题的正确方法。
        转到 node.js website 并下载最新版本的 node.js pkg
        安装后,重新安装软件,一切都会好的。

        【讨论】:

          【解决方案6】:

          我最近在节点 v8.8.1 上也遇到了这个错误 正如@Derek 提到的,我运行npm rebuild dtrace-provider 并解决了问题。

          【讨论】:

            【解决方案7】:

            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 版本以便能够构建。

            希望这对某人有帮助 =)

            【讨论】:

              【解决方案8】:

              我在以下(精心制作的)序列中取得了成功:

              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-provider(尤其是 bunyan)。
              8. 要确认,请npm list | grep dtrace -B6
              9. 如果有低于0.8.8 的值,请按照How do I override nested NPM dependency versions? 中的方法编辑package-lock.json。将requires 替换为dependencies 以获得dtrace-provider 并更新版本。
              10. 返回以清理所有内容:rm -rf node_modules
              11. 然后,再次,npm install --python=python2.7

              我不得不循环 npm list 几次,因为我认为我已经抓住了一切,但我没有。

              关键点是使用所需的 python 版本,有一个对 unix 友好的路径,并寻找所有嵌套的依赖项。 python版本问题给出了一个很大的混乱错误,空间问题给出了一个更容易错过的错误。

              【讨论】:

                【解决方案9】:

                我通过运行这个命令设法让它工作

                npm install --python=python2.7
                

                【讨论】:

                  猜你喜欢
                  • 2018-04-05
                  • 2016-07-29
                  • 2022-12-15
                  • 1970-01-01
                  • 2018-02-21
                  • 2021-07-23
                  相关资源
                  最近更新 更多