今天早上,当我尝试推送到 Heroku 存储库时,我收到了以下失败消息。
我使用的 Node.js 版本与上次部署时使用的版本相同,但我找不到任何文档来解释失败的含义。
这似乎是node-gyp的某种编译问题,但我不知道如何解决它。
以下是尝试部署的控制台输出:
Enumerating objects: 43, done.
Counting objects: 100% (43/43), done.
Delta compression using up to 12 threads
Compressing objects: 100% (24/24), done.
Writing objects: 100% (26/26), 16.71 KiB | 2.09 MiB/s, done.
Total 26 (delta 18), reused 0 (delta 0), pack-reused 0
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Building on the Heroku-20 stack
remote: -----> Using buildpack: heroku/nodejs
remote: -----> Node.js app detected
remote:
remote: -----> Creating runtime environment
remote:
remote: NPM_CONFIG_PRODUCTION=false
remote: NPM_CONFIG_LOGLEVEL=error
remote: NODE_VERBOSE=false
remote: NODE_ENV=production
remote: NODE_MODULES_CACHE=true
remote:
remote: -----> Installing binaries
remote: engines.node (package.json): 14.16.0
remote: engines.npm (package.json): unspecified (use default)
remote:
remote: Resolving node version 14.16.0...
remote: Downloading and installing node 14.16.0...
remote: Using default npm version: 6.14.11
remote:
remote: -----> Restoring cache
remote: - node_modules
remote:
remote: -----> Installing dependencies
remote: Installing node modules
remote:
remote: > <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="483b396526293c213e2d08796678667978" rel="noreferrer noopener nofollow">[email protected]</a> install /tmp/build_d06f6627/node_modules/sq-native
remote: > node ./install.js
remote:
remote:
remote: > <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dcb9aab9b2a8f1b0b3b3acf1afa8bda8af9cedf2eef2ec" rel="noreferrer noopener nofollow">[email protected]</a> install /tmp/build_d06f6627/node_modules/event-loop-stats
remote: > node-gyp rebuild
remote:
remote: make: Entering directory '/tmp/build_d06f6627/node_modules/event-loop-stats/build'
remote: CXX(target) Release/obj.target/eventLoopStats/src/eventLoopStats.o
remote: In file included from ../../nan/nan.h:56,
remote: from ../src/eventLoopStats.cc:1:
remote: /app/.cache/node-gyp/14.16.0/include/node/node.h:758:43: warning: cast between incompatible function types from ‘void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)’ {aka ‘void (*)(v8::Local<v8::Object>)’} to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
remote: 758 | (node::addon_register_func) (regfunc), \
remote: | ^
remote: /app/.cache/node-gyp/14.16.0/include/node/node.h:792:3: note: in expansion of macro ‘NODE_MODULE_X’
remote: 792 | NODE_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage)
remote: | ^~~~~~~~~~~~~
remote: ../src/eventLoopStats.cc:95:1: note: in expansion of macro ‘NODE_MODULE’
remote: 95 | NODE_MODULE(eventLoopStats, init)
remote: | ^~~~~~~~~~~
remote: SOLINK_MODULE(target) Release/obj.target/eventLoopStats.node
remote: COPY Release/eventLoopStats.node
remote: make: Leaving directory '/tmp/build_d06f6627/node_modules/event-loop-stats/build'
remote:
remote: > <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b4d1dec7f4869a839a80" rel="noreferrer noopener nofollow">[email protected]</a> postinstall /tmp/build_d06f6627/node_modules/ejs-mate/node_modules/ejs
remote: > node ./postinstall.js
remote:
remote:
remote: > <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bfdddccdc6cfcbff8a918f918e" rel="noreferrer noopener nofollow">[email protected]</a> install /tmp/build_d06f6627/node_modules/bcrypt
remote: > node-pre-gyp install --fallback-to-build
remote:
remote: [bcrypt] Success: "/tmp/build_d06f6627/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node" is installed via remot
remote:
remote: > @sp/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2d4240484a4c6d1d03140319" rel="noreferrer noopener nofollow">[email protected]</a> postinstall /tmp/build_d06f6627/node_modules/@sp/omega
remote: > npm run build-files
remote:
remote:
remote: > @sp/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0e61636b696f4e3e2037203a" rel="noreferrer noopener nofollow">[email protected]</a> build-files /tmp/build_d06f6627/node_modules/@sp/omega
remote: > omega build
remote:
remote: sh: 1: omega: Permission denied
remote: npm ERR! code ELIFECYCLE
remote: npm ERR! errno 126
remote: npm ERR! @sp/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6a05070f0d0b2a5a4453445e" rel="noreferrer noopener nofollow">[email protected]</a> build-files: `omega build`
remote: npm ERR! Exit status 126
remote: npm ERR!
remote: npm ERR! Failed at the @sp/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b4dbd9d1d3d5f4849a8d9a80" rel="noreferrer noopener nofollow">[email protected]</a> build-files script.
remote: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
remote:
remote: npm ERR! A complete log of this run can be found in:
remote: npm ERR! /tmp/npmcache.4dZx9/_logs/2021-04-06T16_09_47_101Z-debug.log
remote: npm ERR! code ELIFECYCLE
remote: npm ERR! errno 126
remote: npm ERR! @sp/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="fb94969e9c9abbcbd5c2d5cf" rel="noreferrer noopener nofollow">[email protected]</a> postinstall: `npm run build-files`
remote: npm ERR! Exit status 126
remote: npm ERR!
remote: npm ERR! Failed at the @sp/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="97f8faf2f0f6d7a7b9aeb9a3" rel="noreferrer noopener nofollow">[email protected]</a> postinstall script.
remote: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
remote:
remote: npm ERR! A complete log of this run can be found in:
remote: npm ERR! /tmp/npmcache.4dZx9/_logs/2021-04-06T16_09_47_164Z-debug.log
remote:
remote: -----> Build failed
remote:
remote: We're sorry this build is failing! You can troubleshoot common issues here:
remote: https://devcenter.heroku.com/articles/troubleshooting-node-deploys
remote:
remote: If you're stuck, please submit a ticket so we can help:
remote: https://help.heroku.com/
remote:
remote: Love,
remote: Heroku
remote:
remote: ! Push rejected, failed to compile Node.js app.
remote:
remote: ! Push failed
remote: Verifying deploy...
remote:
remote: ! Push rejected to beta-???????????-net.
remote:
To https://git.heroku.com/beta-???????????-net.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/beta-???????????-net.git'
最佳答案
当 Heroku 尝试 npm install event-loop-stats
时,会发生此错误。我们知道这是因为错误消息中的这一行。
make: Entering directory '/tmp/build_d06f6627/node_modules/event-loop-stats/build'
该模块使用gyp
,因为安装它需要编译一些C++语言的东西才能使其工作。在我上ts npm page at the bottom有一个关于兼容性的通知。继link on that notice显示它可以在 Node v6、v10 和 v12 上运行。但你告诉 Heroku 使用 v14。
Tell heroku to use v12将其放入 package.json
"engines": {
"node": "12.x"
关于node.js - Heroku Node.js 构建失败 : node-gyp throws error during npm install,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66972499/