4

node.js对它的包管理系统和它的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++

在我看来,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使用 local-compiled fibers.node,它会起作用。我的问题是:

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

非常感谢您的帮助。

更新/编辑:

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

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

4

1 回答 1

1

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

于 2018-02-12T18:17:57.390 回答