【问题标题】:NodeJS deploying with webpack to Heroku: Build failed with error code: 1NodeJS 使用 webpack 部署到 Heroku:构建失败,错误代码:1
【发布时间】:2019-04-14 20:13:48
【问题描述】:

我在使用 Heroku 部署 react/webpack 应用程序时遇到了困难,该应用程序可以在本地运行而没有任何问题。当我尝试部署它时,会得到一大串以“构建失败,错误代码:1”结尾的文本,然后是“错误:无法将一些参考推送到'https://git.heroku.com/vast-wildwood-63128.git'”。我不确定问题出在哪里,所以我附上了我的 server.js 和 package.json,如果我遗漏了任何有用的信息,请告诉我。不确定它是否相关,但通常我使用 Linux,但最近我一直在使用 Windows。谢谢

编辑:按照建议更新了带有引擎字段的包 json

package.json(使用引擎字段更新)

{
  "name": "enerjee-website",
  "version": "1.0.0",
  "engines": {
    "node": "8.11.2",
    "yarn": "1.7.0",
    "npm": "5.6.0"
  },
  "main": "index.js",
  "author": "Sonam",
  "license": "",
  "scripts": {
    "serve": "live-server public/",
    "build:dev": "webpack",
    "build:prod": "webpack -p --env production",
    "dev-server": "webpack-dev-server",
    "start": "node server/server.js",
    "heroku-postbuild": "yarn run build:prod"
  },
  "dependencies": {
    "@fortawesome/fontawesome-free": "^5.4.2",
    "@fortawesome/fontawesome-svg-core": "^1.2.8",
    "@fortawesome/free-brands-svg-icons": "^5.5.0",
    "@fortawesome/free-solid-svg-icons": "^5.5.0",
    "@fortawesome/react-fontawesome": "^0.1.3",
    "babel-cli": "6.24.1",
    "babel-core": "6.25.0",
    "babel-loader": "7.1.1",
    "babel-plugin-transform-class-properties": "6.24.1",
    "babel-preset-env": "1.5.2",
    "babel-preset-react": "6.24.1",
    "bootstrap": "^4.1.3",
    "css-loader": "0.28.4",
    "express": "^4.16.3",
    "jquery": "^3.3.1",
    "live-server": "^1.2.0",
    "node-sass": "4.5.3",
    "normalize.css": "7.0.0",
    "popper.js": "^1.14.4",
    "react": "15.6.1",
    "react-dom": "15.6.1",
    "react-modal": "2.2.2",
    "react-router-dom": "4.1.2",
    "sass-loader": "6.0.6",
    "style-loader": "0.18.2",
    "validator": "8.0.0",
    "webpack": "3.1.0",
    "webpack-dev-server": "2.5.1"
  },
  "devDependencies": {
    "file-loader": "^2.0.0",
    "image-webpack-loader": "^4.3.1"
  }
}

server.js

const path = require('path');
const express = require('express');
const app = express();
const publicPath = path.join(__dirname, '..', 'public');
const port = process.env.PORT || 3000;

app.use(express.static(publicPath));

app.get('*', (req, res) => {
  res.sendFile(path.join(publicPath, 'index.html'));
});

app.listen(port, () => {
  console.log('Server is up on' + port);
});

添加引擎后的错误文本

remote: -----> Node.js app detected
remote:
remote: -----> Creating runtime environment
remote:
remote:        NPM_CONFIG_LOGLEVEL=error
remote:        NODE_ENV=production
remote:        NODE_MODULES_CACHE=true
remote:        NODE_VERBOSE=false
remote:
remote: -----> Installing binaries
remote:        engines.node (package.json):  8.x|10.x
remote:        engines.npm (package.json):   unspecified (use default)
remote:        engines.yarn (package.json):  unspecified (use default)
remote:
remote:        Resolving node version 8.x|10.x...
remote:        Error: Invalid semantic version "8.x|10.x"
remote:
remote: -----> Build failed
remote:
remote:  !     Invalid semver requirement
remote:
remote:        Node, Yarn, and npm adhere to semver, the semantic versioning convention
remote:        popularized by GitHub.
remote:
remote:        http://semver.org/
remote:
remote:        However you have specified a version requirement that is not a valid
remote:        semantic version.
remote:
remote:        https://kb.heroku.com/why-is-my-node-js-build-failing-because-of-an-invalid-semver-requirement
remote:
remote:  !     Push rejected, failed to compile Node.js app.
remote:
remote:  !     Push failed
remote: Verifying deploy...
remote:
remote: !       Push rejected to vast-wildwood-63128.
remote:
To https://git.heroku.com/vast-wildwood-63128.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/vast-wildwood-63128.git'

【问题讨论】:

  • 我喜欢它显示“一些可能的问题:”的方式,并带有指向:devcenter.heroku.com/articles/… 的链接,这正是@zakaria 在下面的回答中所写的内容。
  • 是的,我最初只是认为这是一个通用错误建议,因为我之前部署到 Heroku 的所有项目都不需要引擎字段

标签: node.js reactjs heroku webpack


【解决方案1】:

您需要在 package.json 中指定节点版本,以便 Heroku 知道要运行哪个节点版本。

例如

"engines": {
  "node": "8.x|10.x"
},

https://devcenter.heroku.com/articles/nodejs-support

读取指定 node.js 版本部分。

【讨论】:

  • 感谢您的回复。我检查了链接并尝试在引擎字段中添加版本,但不幸的是,构建现在失败并出现不同的错误。我已经用新的 package.json 和错误更新了原始问题
猜你喜欢
  • 2019-03-05
  • 2016-02-20
  • 2018-09-01
  • 2019-02-16
  • 2019-07-13
  • 2021-11-03
  • 1970-01-01
  • 2018-08-21
  • 1970-01-01
相关资源
最近更新 更多