GYP ERR! построить ошибку. stack Ошибка: "make" не удалось с кодом выхода 2

В настоящее время я работаю над веб-приложением nodejs. У меня возникают проблемы с нажатием на приложение онлайн с облачным литейным цехом. Я провел некоторое исследование ошибок, и кажется, что некоторые из установленных пакетов имеют некоторые конфликты.

Это файл package.json.

{
  "dependencies": {
    "c3": "^0.4.12",
    "cfenv": "1.0.0",
    "cloudant": "^1.8.0",
    "dygraphs": "^2.0.0",
    "express": "4.5.1",
    "getmac": "1.0.6",
    "http": "0.0.0",
    "mqtt": "1.0.5",
    "properties": "1.2.1",
    "save": "^2.3.0",
    "sockjs": "0.3.9",
    "websocket-multiplex": "0.1.x"
  },
  "description": "description.",
  "license": "UNLICENSED",
  "main": "app.js",
  "repository": {
    "type": "git",
    "url": "<gitUrl>"
  }
}

Это ошибка, с которой я сталкиваюсь, когда пытаюсь запустить приложение через облачный литейный цех. Эта аналогичная ошибка возникает, когда я устанавливаю npm после удаления всего содержимого папки node_modules.

../src/bufferutil.cc:32:50: error: call of overloaded 'NODE_SET_METHOD(v8::Local<v8::FunctionTemplate>&, const char [6], void (&)(const v8::FunctionCallbackInfo<v8::Value>&))' is ambiguous
     NODE_SET_METHOD(t, "merge", BufferUtil::Merge);

../src/bufferutil.cc:32:50: note: candidates are:
In file included from ../src/bufferutil.cc:8:0:
/root/.node-gyp/8.0.0/include/node/node.h:257:13: note: void node::NODE_SET_METHOD(v8::Local<v8::Template>, const char*, v8::FunctionCallback)
 inline void NODE_SET_METHOD(v8::Local<v8::Template> recv,
             ^
/root/.node-gyp/8.0.0/include/node/node.h:270:13: note: void node::NODE_SET_METHOD(v8::Local<v8::Object>, const char*, v8::FunctionCallback)
 inline void NODE_SET_METHOD(v8::Local<v8::Object> recv,
             ^
bufferutil.target.mk:95: recipe for target 'Release/obj.target/bufferutil/src/bufferutil.o' failed
make: *** [Release/obj.target/bufferutil/src/bufferutil.o] Error 1
make: Leaving directory '/home/WibiSmart-Bluemix-App/node_modules/bufferutil/build'

gyp ERR! build error
gyp ERR! stack Error: 'make' failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:285:23)
gyp ERR! stack     at emitTwo (events.js:125:13)
gyp ERR! stack     at ChildProcess.emit (events.js:213:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:197:12)
gyp ERR! System Linux 4.4.30-ti-r64
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/WibiSmart-Bluemix-App/node_modules/bufferutil
gyp ERR! node -v v8.0.0
gyp ERR! node-gyp -v v3.6.1
gyp ERR! not ok

Кто-нибудь еще столкнулся с этой проблемой или знает, как ее исправить?

Ответ 1

Выяснил вопрос. Некоторые пакеты npm не обновлялись. Я изменил package.json, чтобы установить все последние версии всех пакетов, и ошибка была исправлена.

Ответ 2

package-lock.json после удаления package-lock.json и повторного запуска npm install

Ответ 3

Удалите папку ~/.node-gyp, а затем файл ~/.npmrc.

Перезагрузите сервер и перезапустите npm install в папке вашего проекта

Изменить:

Предупреждение: удаление ~/.npmrc удалит другие ваши конфигурации

Ответ 4

Для других людей, которые спотыкаются на эту точную проблему:

В моем случае версия узла сервера была установлена в более ранней версии в файле package.json, чем в моей локальной среде. Поэтому проверьте, что вы используете локально:

node --version
-> 8.11.3

Затем посмотрите на свой сервер в своем пакете. Json:

{
  "name": "myapp",
  "version": "0.0.0",
  "private": true,
  "engines": {
    "node": "7.10.2" // <-- This is too old, set it to the node version you are running locally (8.11.3)
  },

Я надеюсь, что это помогает кому-то.

Ответ 5

Это старая, но постоянная проблема, хорошо задокументированная по адресу: https://github.com/nodejs/node-gyp/issues/809.

Для меня в ошибке упоминаются номера версий вроде:

gyp ERR! System Darwin 17.7.0
gyp ERR! node -v v12.1.0
gyp ERR! node-gyp -v v3.8.0

После попытки всех возможных комбинаций решений (измените ~/.npmrc, удалите ~/.node-gyp, очистите кэш npm, удалите node_modules и даже перезапустите систему), у меня получилось понизить node_modules узла.

Я считаю, что версии, указанные в журнале для node и node-gyp несовместимости, несовместимы. Поэтому я вернулся к более старой версии узла, которая работала как шарм.

npm install -g [email protected]

Должна быть четкая документация, описывающая критические изменения и проблемы совместимости между ними.

Ответ 6

Если вы используете NMV, вы также можете перейти на версию поддержки вашего пакета, например:

nvm install 7.10.2
nvm use 7.10.2

Ответ 7

У меня возникла такая же проблема при установке беседки gzweb. Я обнаружил, что apt install nodejs устанавливает "узел" в направлении "/usr/bin/". Вы можете проверить, по which node. Но node -v все еще ссылается на "/usr/local/bin/node", что является неверной версией, которую мне не удалось удалить. Таким образом, как мое решение:

rm -rf /usr/local/bin/node
cp -i /usr/bin/node /usr/local/bin/
cp -i /usr/bin/nodejs /usr/local/bin/

шаги:

sudo apt-get install npm npm install -g n n stable npm install [email protected] -g ln -s/usr/local/bin/npm/usr/bin/npm

Ответ 8

Выполните следующие действия, чтобы решить проблему.

  1. Убедитесь, что у вас установлены инструменты сборки.
  2. Обновить узел-гип
  3. Удалите package-lock.json и папку модулей узла и снова запустите установку npm.
  4. Удалите папку ~/.node-gyp и снова запустите установку npm.

Источник: https://codeforgeek.com/make-failed-with-exit-code-2/

Ответ 9

Я думаю, удалить этот каталог и очистить кеш npm лучше:

rm -rf ~/.node-gyp/
rm -r node_modules/.bin/;
rm -r build/
npm cache clean

и вы можете проверить

npm install -g node-gyp

и

npm install -g node-pre-gyp

наконец:

npm install <your module>