node.js - Heroku Node.js 构建失败 : node-gyp throws error during npm install

标签 node.js heroku node-gyp

今天早上,当我尝试推送到 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/

相关文章:

node.js - Loopback 中 Application 模型的使用

node.js - NodeSSPI 发布时 2 分钟超时

node.js - 如何使 mongoDB 实例可用于 Node.js 中的所有其他模块

php - Heroku PHP “Getting Started” 不在 OSX 上本地运行

mongodb - 使用 Mongoose 从 MongoDB 文档中删除一个键

sql - 如何在 heroku 上获取纯文本 postgres 数据库转储?

django - 在 heroku 上部署 django 应用程序 - 在服务器上找不到请求的 URL

带有node-gyp的node.js应用程序无法在azure网站上部署

visual-studio-2010 - node-gyp:无法打开输入文件 'kernel32.lib'

node.js - node-gyp build 如何在构建 Node 扩展时指定目标 Node 版本