ошибка с библиотекой npm sqlite3 после обновления до узла 12 - GLIBCXX_3.4.21 'не найден - PullRequest
0 голосов
/ 16 мая 2019

Я обновился до узла 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 голосов
/ 19 мая 2019

Кто-нибудь знает, что это значит?

Это означает, что ваша версия node скомпилирована и связана с более новой версией libstdc++.so.6, доступной во время выполнения.

В Linux нельзя ожидать, что двоичные файлы, созданные на более новой системе, будут работать на более старой (но можно ожидать, что старые двоичные файлы будут работать на более новой системе - это обратная совместимость).

...