heroku 的下一个/节点应用程序部署错误

Posted

技术标签:

【中文标题】heroku 的下一个/节点应用程序部署错误【英文标题】:next/node app deployment errors with heroku 【发布时间】:2019-05-12 18:25:06 【问题描述】:

我正在尝试使用 heroku 部署以下 Web 应用程序:

https://github.com/darego1990/web1

虽然我收到以下构建日志错误,但我不确定原因:

-----> Node.js app detected

-----> Creating runtime environment

   NPM_CONFIG_LOGLEVEL=error
   NODE_ENV=production
   NODE_MODULES_CACHE=true
   NODE_VERBOSE=false

-----> Installing binaries
   engines.node (package.json):  0.12.x
   engines.npm (package.json):   2.5.x

   Resolving node version 0.12.x...
   Downloading and installing node 0.12.18...
   Bootstrapping npm 2.5.x (replacing 2.15.11)...
   npm 2.5.x installed

-----> Building dependencies
   Installing node modules (package.json + package-lock)
   react@16.6.3 node_modules/react
   ├── object-assign@4.1.1
   ├── prop-types@15.6.2
   ├── scheduler@0.11.3
   └── loose-envify@1.4.0 (js-tokens@4.0.0)

   react-dom@16.6.3 node_modules/react-dom
   ├── object-assign@4.1.1
   ├── loose-envify@1.4.0 (js-tokens@4.0.0)
   ├── prop-types@15.6.2
   └── scheduler@0.11.3

   next@7.0.2 node_modules/next
   ├── babel-core@7.0.0-bridge.0
   ├── htmlescape@1.1.1
   ├── fresh@0.5.2
   ├── etag@1.8.1
   ├── case-sensitive-paths-webpack-plugin@2.1.2
   ├── http-status@1.0.1
   ├── hoist-non-react-statics@2.5.5
   ├── ansi-html@0.0.7
   ├── path-to-regexp@2.1.0
   ├── nanoid@1.2.1
   ├── unfetch@3.0.0
   ├── babel-plugin-transform-react-remove-prop-types@0.4.15
   ├── strip-ansi@3.0.1 (ansi-regex@2.1.1)
   ├── babel-plugin-react-require@3.0.0
   ├── minimist@1.2.0
 .....
   Running heroku-postbuild

   > my-app@1.0.0 heroku-postbuild 
/tmp/build_f85d5b0987590f76e56a2945b6c4ccc1
   > npm run build


   > my-app@1.0.0 build /tmp/build_f85d5b0987590f76e56a2945b6c4ccc1
   > next build

 /tmp/build_f85d5b0987590f76e56a2945b6c4ccc1/node_modules/next/dist/bin
/next:44
   var inspectArg = process.argv.find(function (arg) 
                          ^
TypeError: undefined is not a function
at Object.<anonymous> 

(/tmp/build_f85d5b0987590f76e56a2945b6c4ccc1/node_modules/next/dist
/bin/next:44:31)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3

npm 错误! Linux 4.4.0-1031-aws npm 错误! argv“节点”“/tmp/build_f85d5b0987590f76e56a2945b6c4ccc1/.heroku/node/bin/npm”“运行”“构建” npm 错误!节点 v0.12.18 npm 错误! npm v2.5.1 npm 错误!代码生命周期 npm 错误!我的应用程序@1.0.0 构建:next build npm 错误!退出状态 1 npm 错误! npm 错误!在 my-app@1.0.0 构建脚本“下一个构建”中失败。 npm 错误!这很可能是 my-app 包的问题, npm 错误!不是 npm 本身。 npm 错误!告诉作者这在您的系统上失败: npm 错误!下一个构建 npm 错误!您可以通过以下方式获取他们的信息: npm 错误! npm 所有者 ls my-app npm 错误!上面可能有额外的日志输出。 npm 错误!请在任何支持请求中包含以下文件: npm 错误! /tmp/build_f85d5b0987590f76e56a2945b6c4ccc1/npm-debug.log npm 错误! Linux 4.4.0-1031-aws npm 错误! argv "node" "/tmp/build_f85d5b0987590f76e56a2945b6c4ccc1/.heroku/node/bin/npm" "run" "heroku-postbuild" "--if-present" npm 错误!节点 v0.12.18 npm 错误! npm v2.5.1 npm 错误!代码生命周期 npm 错误! my-app@1.0.0 heroku-postbuild: npm run build npm 错误!退出状态 1 npm 错误! npm 错误!在 my-app@1.0.0 heroku-postbuild 脚本“npm run build”中失败。 npm 错误!这很可能是 my-app 包的问题, npm 错误!不是 npm 本身。 npm 错误!告诉作者这在您的系统上失败: npm 错误! npm 运行构建 npm 错误!您可以通过以下方式获取他们的信息: npm 错误! npm 所有者 ls my-app npm 错误!上面可能有额外的日志输出。 npm 错误!请在任何支持请求中包含以下文件: npm 错误! /tmp/build_f85d5b0987590f76e56a2945b6c4ccc1/npm-debug.log -----> 构建失败

   We're sorry this build is failing! You can troubleshoot common issues here:
   https://devcenter.heroku.com/articles/troubleshooting-node-deploys

   If you're stuck, please submit a ticket so we can help:
   https://help.heroku.com/

   Love,
   Heroku

!推送被拒绝,无法编译 Node.js 应用程序。 !推送失败

【问题讨论】:

【参考方案1】:

您能否使用以下内容更新您的package.json 文件:

"engines": 
   "node": ">= 8.0.0"

看起来你的节点引擎已经很老了,在 next.js 的 github repo 中,看起来他们正在使用 >8.0.0。

【讨论】:

感谢您的回复!你是对的,更新节点版本修复了这个问题,服务器和客户端也遵守了。虽然当 Heroku 尝试构建时,它会抛出一个关于 isomorphic-unfetch npm 的新错误 - Failed to build Error: (client) ./pages/entertainment.js Module not found: Error: Can't resolve 'isomorphic-unfetch'在“/tmp/build_3ed017269452ee8481330c29f3620845/pages”中。你知道我怎样才能让 Heroku 识别 isomorphic-unfetch npm 吗? 为了尽快解决问题,我会说只需将 isomorphic-unfetch 包添加到您的 package.json 文件中。 npm install --save isomorphic-unfetch 我把它放在 package.json 的哪个位置有关系吗? 它应该在您的依赖项中。您的“依赖项”中的任何内容都将由 heroku(或您正在使用的任何平台)获取只需运行:“npm install --save isomorphic-unfetch”,它应该相应地更新它 感谢您的时间 Mavi,非常感谢!

以上是关于heroku 的下一个/节点应用程序部署错误的主要内容,如果未能解决你的问题,请参考以下文章

Heroku - 无法部署MongoDB节点应用程序

节点未在 Heroku 上正确部署的 Ionic 应用程序

在 Heroku 上部署 MEAN 应用程序时出现应用程序错误

部署到 Heroku 错误:找不到模块“/app/server.js”

将 Ember.js 应用程序部署到 Heroku 时如何解决“无法下载节点 14.18.0”?

无法在 heroku 上构建和部署 Rails 6.0.4.1 应用程序 - 引发 gyp verb cli 错误