我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
,它会起作用。我的问题是:
- 那能解决吗?
- 如果是这样,我该如何实现?
- 如果不是,那么进一步理解和修复此错误的正确方向是什么?也许
3.14
我应该说服5.0
在安装时编译而不是在运行时使用?或其他?
非常感谢您的帮助。
更新/编辑:
我想我自己解决了这个问题,以防有人发现这个可怜的、尘土飞扬的老问题被遗忘在某个架子后面的某个地方......
问题显然是由于在我的环境中并行安装了多个版本的node
/ node-gyp
,并且构建过程,即使它是从较新版本的 开始的node
,也在 中找到node-gyp
,$PATH
这显然是导致旧版本fibers
成为的原因建成。至少,我是这么认为的。