如何在Heroku multi buildpack php + nodejs中启动express服务器

时间:2018-05-02 03:04:16

标签: php node.js heroku socket.io buildpack

我正在Heroku上创建一个webapp,我需要在我的php应用程序的一部分中进行一些实时数据更新。

所以我想我可以在express服务器上使用socket.io来提供实时通信功能。

如何在php buildpack中运行express。

这是我的package.json脚本部分

"scripts": {
    "dev": "cross-env NODE_ENV=development webpack --config config/config.dev.js",
    "build": "cross-env NODE_ENV=production webpack --config config/config.prod.js",
    "start": "node server.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

我的procfile是......

web: vendor/bin/heroku-php-apache2 public/

和我的buildpacks

$ heroku buildpacks
1. heroku/nodejs
2. heroku/php

当我在heroku上部署它时,我在heroku日志中没有编译错误,但是我的webapp没有从socket.io服务器获得实时更新。 在浏览器的控制台日志中,我在http://myapp.herokuapp.com/socket.io/?EIO=3&transport=polling

上收到404错误

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

如果要运行节点/ express web dyno,则需要在proc文件中使用web: npm start

然而,听起来你想要一个PHP Web服务器,其中node / express在不同的端口上侦听。你无法在Heroku上真正做到这一点。相反,您需要为您的节点应用程序使用工作器dyno。但是,您无法通过URL直接从您的前端访问您的工作人员dyno。相反,您需要执行类似here所述的操作。

另见this answer