升级到节点12后,npm sqlite3库出现错误-找不到GLIBCXX_3.4.21'

时间:2019-05-16 09:05:38

标签: node.js ubuntu libstdc++ node-sqlite3

我已升级到node-12,sqlite3 npm软件包4.0.0

当我在台式机(ubuntu 18)上运行它时,它工作正常。但是,在cicleci上,我仍在使用带有ubuntu 14的旧容器,升级到节点12会导致此问题:

$ node --version
v12.2.0
$ node
> const s = require('sqlite3');                                           
Thrown:                                                                    
Error: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/ubuntu/project/testing/node_modules/sqlite3/lib/binding/node-v72-linux-x64/node_sqlite3.node)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:800:18)       
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at Module.require (internal/modules/cjs/loader.js:666:19)  
    at require (internal/modules/cjs/helpers.js:16:16)

有人知道这意味着什么吗?

这是复制它的简单方法:

$ docker run -it ubuntu:14.04
# apt-get update
# apt-get install curl -y
# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
# source ~/.nvm/nvm.sh
# nvm install 12
# mkdir project
# cd project
# node --version
v12.2.0
# npm install sqlite3@4.0.8
# node
> require('sqlite3');
Thrown:
Error: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /project/node_modules/sqlite3/lib/binding/node-v72-linux-x64/node_sqlite3.node)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:800:18)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at Module.require (internal/modules/cjs/loader.js:666:19)
    at require (internal/modules/cjs/helpers.js:16:16)

1 个答案:

答案 0 :(得分:0)

  

有人知道这意味着什么吗?

这意味着您的node版本已编译并与运行时可用的更新版本的libstdc++.so.6链接。

在Linux上,您不能指望在较新的系统上构建的二进制文件可以在较旧的系统上运行(但是可以期望将旧的二进制文件在较新的系统上运行-这是向后兼容的。)