【问题标题】:Node.js module "fibers" not taking the correct versionNode.js 模块“纤维”没有采用正确的版本
【发布时间】:2016-11-09 12:27:42
【问题描述】:

我对@9​​87654321@ 及其包管理系统和require 还是很陌生。我在使用npm install 安装了一堆软件包后遇到了以下运行时错误:

ERROR: Couldn't initialise framework "wdio-mocha-framework".
Error: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found 
(required by <path>.../node_modules/fibers/bin/linux-ia32-v8-5.0/fibers.node)
at Error (native)

我对错误的理解是二进制 fibers.node 编译时使用的 libstdc++ 比运行时可用的 libstdc++ 更新。

在我看来,npm install 确实编译了 fibers.node

> fibers@1.0.13 install <path>.../node_modules/fibers
> node build.js || nodejs build.js

make[1]: Entering directory `<path>.../node_modules/fibers/build'
<snip some output, including warnings, here that I don't deem relevant>
Installed in `<path>.../node_modules/fibers/bin/linux-ia32-v8-3.14/fibers.node`

但是,我发现在运行时抛出错误的 fibers.node 与编译的不同,我认为这是问题的根源。

编译:

.../linux-ia32-v8-3.14/fibers.node

在运行时使用并失败:

.../linux-ia32-v8-5.0/fibers.node

所以我猜测并希望如果我能说服wdio-mocha-framework 使用本地编译的fibers.node,它会起作用。因此,我的问题是:

  1. 这样能解决吗?
  2. 如果是这样,我该如何实现?
  3. 如果不是,进一步了解和修复此错误的正确方向是什么?也许不是让3.14 在运行时使用,我应该说服5.0 在安装时编译?还是……其他?

非常感谢您的帮助。

更新/编辑:

我想我自己解决了这个问题,以防万一有人发现这个可怜的、尘土飞扬的老问题被遗​​忘在某个书架后面的某个地方......

问题显然是由于在我的环境中并行安装了多个版本的node/node-gyp,并且构建过程,即使它是从较新版本的node 开始的,正在寻找@ $PATH 中的 987654340@ 显然是导致旧版本 fibers 构建的原因。至少,我是这么认为的。

【问题讨论】:

  • 您使用哪个版本来管理构建 linux-x64-v8-3.14?由于某种原因,我无法生成该二进制文件。

标签: node.js npm webdriver-io node-fibers


【解决方案1】:

最近刚遇到这个问题。我设法通过卸载当前版本的 Node.JS(我有最新版本,在本例中为 9.5.0)并安装推荐的版本(在本例中为 8.9.4)来解决它。问题消失了。希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 2013-09-07
    • 2019-05-19
    • 2011-07-16
    • 1970-01-01
    • 2014-05-31
    • 2020-01-20
    相关资源
    最近更新 更多