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 上部署 MEAN 应用程序时出现应用程序错误
部署到 Heroku 错误:找不到模块“/app/server.js”