Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Heroku构建失败-错误R10(启动超时)_Node.js_Heroku_Deployment - Fatal编程技术网

Node.js Heroku构建失败-错误R10(启动超时)

Node.js Heroku构建失败-错误R10(启动超时),node.js,heroku,deployment,Node.js,Heroku,Deployment,我正在尝试部署一个简单的应用程序,没什么大不了的,但我一直遇到这个错误 错误R10(启动超时)->Web进程在启动后60秒内绑定到$PORT失败 即使Heroku在60秒前就完成了部署。我也在服务器中设置了process.env.PORT。我在Heroku上有一些应用程序,因此我熟悉部署 我事先制作了服务器包文件(src/build/bundle.js)和客户端包文件(src/dist/bundle.js),并将所有内容推送到Heroku。在package.json中有一个启动脚本,它应该只启动

我正在尝试部署一个简单的应用程序,没什么大不了的,但我一直遇到这个错误

错误R10(启动超时)->Web进程在启动后60秒内绑定到$PORT失败

即使Heroku在60秒前就完成了部署。我也在服务器中设置了process.env.PORT。我在Heroku上有一些应用程序,因此我熟悉部署

我事先制作了服务器包文件(src/build/bundle.js)和客户端包文件(src/dist/bundle.js),并将所有内容推送到Heroku。在package.json中有一个启动脚本,它应该只启动服务器

当地一切正常

我使用的是服务器端渲染,我在客户端分离了bundle、vendor和extract css。在服务器端,我还捆绑文件,并使用html网页包插件。不知道这些是否有关联,不应该

prodServer.js

const APP_PORT: number = conf.APP_PORT
const PORT: any = process.env.PORT || APP_PORT

const app: Express = new Express()

app.set('views', path.join(__dirname, 'views'))
app.set('view engine', 'ejs')

app.use(Express.static(path.join(__dirname, '../', 'dist'), {maxAge: '1y'}))

app.use((req: Object, res: Object, next: () => void): void => {
  res.set('Cache-Control', 'no-cache')
  return next()
})

app.get('*', (req: Object, res: Object) => {
  res.render('index', {app: req.body, webpack: req.chunk})
})

app.listen(PORT, () => {
  console.log(`
  Express server is up on port ${PORT}
  Production environment
  `)
})
package.json

{
  "name": "QR",
  "version": "1.0.0",
  "description": "Q",
  "main": "prodServer.js",
  "license": "MIT",
  "scripts": {
    "clean": "rm -rf ./src/dist && rm -rf ./src/build",
    "build-client": "cross-env NODE_ENV=production webpack -p --config webpack.config.prod.js",
    "build-server": "cross-env NODE_ENV=production webpack -p --config webpack.config.server.prod.js",
    "start": "cross-env NODE_ENV=production node ./src/build/bundle.js"
  },
...

解决方案


嗯。我设法把它修好了。问题是DefinePlugin。我有process.env.NODE_env:production,它在我的代码中交换process.env.PORT,所以Heroku无法连接。

嗨,斯科特。如何获取端口,Heroku不是通过process.env.port使用自己的端口吗。我在生产构建中提到的唯一其他端口是我的webpack包中的publicPath。实际上,我在生产中甚至不使用该端口。我通过script tag.var而不是portScott上的const直接在html中引用捆绑包文件。我试过了,但还是不走运,还是犯了同样的错误。