2016-01-21 4 views
0

Im пытается создать частный пакет NodeJS на машине без сетевого доступа. Так что на машине несколько версий узла, на котором я пытаюсь построить (0.10.26 и некоторые другие ...).NodeJS npm sqlite 3.1.1 зависимость использует неправильную версию узла и узла-gyp под капотом

Итак, как я собираюсь об этом, я связываю офлайн-npm-0.2.0.tgz с нашим пакетом с полной папкой с кешем, содержащей все зависимости, а затем устанавливаю и запускаю автономный-npm-0.2.0-указатель как каталог кэша, это, кажется, работает хорошо, и все зависимости вытаскиваются с локального сервера.

Дело в том, что для пакета, который я создаю, требуется узел v0.12.7, который также связан с ним, поэтому, когда я использую узел и npm, я указываю на полный путь, который вытаскивается вместе с пакетом.

Проблема заключается в том, что, когда речь идет о строительстве sqlite3.1.1, кажется, сделать это, но использует неправильную версию узла, и я понятия не имею, где он читает его из ...

Вот что мой НПМ конфигурации выглядят следующим образом:

[12:27:19][Step 1/2] ; cli configs 
[12:27:19][Step 1/2] long = true 
[12:27:19][Step 1/2] user-agent = "npm/2.11.3 node/v0.12.7 linux x64" 
[12:27:19][Step 1/2] 
[12:27:19][Step 1/2] ; userconfig /home2/build/.npmrc 
[12:27:19][Step 1/2] cache = "/Users/xxx/buildAgent/work/c5a68e1c6d1f0013/build/install/npmcache" 
[12:27:19][Step 1/2] nodedir = "/Users/xxx/buildAgent/work/c5a68e1c6d1f0013/build/src/node" 
[12:27:19][Step 1/2] registry = "http://localhost:4873/" 
[12:27:19][Step 1/2] 
[12:27:19][Step 1/2] ; default values 
[12:27:19][Step 1/2] access = null 
[12:27:19][Step 1/2] always-auth = false 
[12:27:19][Step 1/2] bin-links = true 
[12:27:19][Step 1/2] browser = null 
[12:27:19][Step 1/2] ca = null 
[12:27:19][Step 1/2] ; cache = "/home2/build/.npm" (overridden) 
[12:27:19][Step 1/2] cache-lock-retries = 10 
[12:27:19][Step 1/2] cache-lock-stale = 60000 
[12:27:19][Step 1/2] cache-lock-wait = 10000 
[12:27:19][Step 1/2] cache-max = null 
[12:27:19][Step 1/2] cache-min = 10 
[12:27:19][Step 1/2] cafile = undefined 
[12:27:19][Step 1/2] cert = null 
[12:27:19][Step 1/2] color = true 
[12:27:19][Step 1/2] depth = null 
[12:27:19][Step 1/2] description = true 
[12:27:19][Step 1/2] dev = false 
[12:27:19][Step 1/2] editor = "vi" 
[12:27:19][Step 1/2] engine-strict = false 
[12:27:19][Step 1/2] fetch-retries = 2 
[12:27:19][Step 1/2] fetch-retry-factor = 10 
[12:27:19][Step 1/2] fetch-retry-maxtimeout = 60000 
[12:27:19][Step 1/2] fetch-retry-mintimeout = 10000 
[12:27:19][Step 1/2] force = false 
[12:27:19][Step 1/2] git = "git" 
[12:27:19][Step 1/2] git-tag-version = true 
[12:27:19][Step 1/2] global = false 
[12:27:19][Step 1/2] globalconfig = "/Users/fe/TeamCity/buildAgent/work/c5a68e1c6d1f0013/build/install/etc/npmrc" 
[12:27:19][Step 1/2] globalignorefile = "/Users/fe/TeamCity/buildAgent/work/c5a68e1c6d1f0013/build/install/etc/npmignore" 
[12:27:19][Step 1/2] group = 1000 
[12:27:19][Step 1/2] heading = "npm" 
[12:27:19][Step 1/2] https-proxy = null 
[12:27:19][Step 1/2] if-present = false 
[12:27:19][Step 1/2] ignore-scripts = false 
[12:27:19][Step 1/2] init-author-email = "" 
[12:27:19][Step 1/2] init-author-name = "" 
[12:27:19][Step 1/2] init-author-url = "" 
[12:27:19][Step 1/2] init-license = "ISC" 
[12:27:19][Step 1/2] init-module = "/home2/build/.npm-init.js" 
[12:27:19][Step 1/2] init-version = "1.0.0" 
[12:27:19][Step 1/2] json = false 
[12:27:19][Step 1/2] key = null 
[12:27:19][Step 1/2] link = false 
[12:27:19][Step 1/2] local-address = undefined 
[12:27:19][Step 1/2] loglevel = "warn" 
[12:27:19][Step 1/2] ; long = false (overridden) 
[12:27:19][Step 1/2] message = "%s" 
[12:27:19][Step 1/2] node-version = "0.12.7" 
[12:27:19][Step 1/2] npat = false 
[12:27:19][Step 1/2] onload-script = null 
[12:27:19][Step 1/2] optional = true 
[12:27:19][Step 1/2] parseable = false 
[12:27:19][Step 1/2] prefix = "/Users/xxx/buildAgent/work/c5a68e1c6d1f0013/build/install" 
[12:27:19][Step 1/2] production = false 
[12:27:19][Step 1/2] proprietary-attribs = true 
[12:27:19][Step 1/2] proxy = null 
[12:27:19][Step 1/2] rebuild-bundle = true 
[12:27:19][Step 1/2] ; registry = "https://registry.npmjs.org/" (overridden) 
[12:27:19][Step 1/2] rollback = true 
[12:27:19][Step 1/2] save = false 
[12:27:19][Step 1/2] save-bundle = false 
[12:27:19][Step 1/2] save-dev = false 
[12:27:19][Step 1/2] save-exact = false 
[12:27:19][Step 1/2] save-optional = false 
[12:27:19][Step 1/2] save-prefix = "^" 
[12:27:19][Step 1/2] scope = "" 
[12:27:19][Step 1/2] searchexclude = null 
[12:27:19][Step 1/2] searchopts = "" 
[12:27:19][Step 1/2] searchsort = "name" 
[12:27:19][Step 1/2] shell = "/bin/bash" 
[12:27:19][Step 1/2] shrinkwrap = true 
[12:27:19][Step 1/2] sign-git-tag = false 
[12:27:19][Step 1/2] spin = true 
[12:27:19][Step 1/2] strict-ssl = true 
[12:27:19][Step 1/2] tag = "latest" 
[12:27:19][Step 1/2] tag-version-prefix = "v" 
[12:27:19][Step 1/2] tmp = "/Users/XXX/temp/buildTmp" 
[12:27:19][Step 1/2] umask = 18 
[12:27:19][Step 1/2] unicode = true 
[12:27:19][Step 1/2] unsafe-perm = true 
[12:27:19][Step 1/2] usage = false 
[12:27:19][Step 1/2] user = 5556 
[12:27:19][Step 1/2] ; user-agent = "npm/{npm-version} node/{node-version} {platform} {arch}" (overridden) 
[12:27:19][Step 1/2] userconfig = "/home2/build/.npmrc" 
[12:27:19][Step 1/2] version = false 
[12:27:19][Step 1/2] versions = false 
[12:27:19][Step 1/2] viewer = "man" 

так как вы можете видеть из выше НОЙ конфигурации версии узла v0.12.7, как это должно быть, но когда дело доходит до установки sqlite3.1.1, это какое-то образом использует v.0.10.26:

[Step 1/2] npm info install [email protected] 
[12:27:29][Step 1/2] 
[12:27:29][Step 1/2] > [email protected] install /Users/fe/TeamCity/buildAgent/work/c5a68e1c6d1f0013/build/install/bin/node_modules/my_package/node_modules/sqlite3 
[12:27:29][Step 1/2] > node-pre-gyp install --fallback-to-build 
[12:27:29][Step 1/2] 
[12:27:29][Step 1/2] node-pre-gyp info it worked if it ends with ok 
[12:27:29][Step 1/2] node-pre-gyp info using [email protected] 
[12:27:29][Step 1/2] node-pre-gyp info using [email protected] | linux | x64 
[12:27:29][Step 1/2] node-pre-gyp info build requesting source compile 
[12:27:29][Step 1/2] gyp info it worked if it ends with ok 
[12:27:29][Step 1/2] gyp info using [email protected] 
[12:27:29][Step 1/2] gyp info using [email protected] | linux | x64 
[12:27:29][Step 1/2] gyp info ok 
[12:27:29][Step 1/2] gyp info it worked if it ends with ok 
[12:27:29][Step 1/2] gyp info using [email protected] 

кажется, строить нормально, но когда дело доходит до модульное тестирование, он не:

Error: Cannot find module '/Users/xxx/buildAgent/work/c5a68e1c6d1f0013/build/install/bin/node_modules/my_package/node_modules/sqlite3/lib/binding/node-v14-linux-x64/node_sqlite3.node' 
[12:28:07][Step 1/2] make[1]: *** [CMakeFiles/my_package.dir/all] Error 2 
[12:28:07][Step 1/2]  at Function.Module._resolveFilename (module.js:336:15) 
[12:28:07][Step 1/2]  at Function.Module._load (module.js:278:25) 
[12:28:07][Step 1/2] make: *** [all] Error 2 
[12:28:07][Step 1/2]  at Module.require (module.js:365:17) 
[12:28:07][Step 1/2]  at require (module.js:384:17) 
[12:28:07][Step 1/2]  at Object.<anonymous> (/Users/xxx/buildAgent/work/c5a68e1c6d1f0013/build/install/bin/node_modules/my_package/node_modules/sqlite3/lib/sqlite3.js:4:15) 
[12:28:07][Step 1/2]  at Module._compile (module.js:460:26) 
[12:28:07][Step 1/2]  at Object.Module._extensions..js (module.js:478:10) 
[12:28:07][Step 1/2]  at Module.load (module.js:355:32) 
[12:28:07][Step 1/2]  at Function.Module._load (module.js:310:12) 
[12:28:07][Step 1/2]  at Module.require (module.js:365:17) 
[12:28:07][Step 1/2]  at require (module.js:384:17) 
[12:28:07][Step 1/2] 
[12:28:07][Step 1/2] 
[12:28:07][Step 1/2] 0% tests passed, 1 tests failed out of 1 

Путь к модулю сборки на самом деле: /Users/ххх/buildAgent/работа/c5a68e1c6d1f0013/сборки/установить/bin/node_modules/my_package/node_modules/sqlite3/Библиотека/связывания/узел-v11-Linux-x64 /node_sqlite3.node

Почему с помощью узла 0.10.26 вместо 0.12.7 большой вопрос ,

ответ

0

Проблема заключалась в том, что я выполнял сборку с использованием узла, который был связан с проектом, предоставляя полный путь к исполняемому элементу узла, в то время как установка узла по умолчанию в системе была разной и когда node-gyp/node- pre-gyp использовала версию системы по умолчанию вместо той, которая была упакована вместе с проектом. Решение состояло в том, чтобы обновить переменную среды PATH и поместить узел в комплекте по умолчанию по умолчанию:

export PATH=/Users/xxx/buildAgent/work/c5a68e1c6d1f0013/build/src/node:$PATH