如何在Create React App中部署Express制作的API

发布时间:2020-07-06 16:58

我有一个用express.js创建的简单api。每当我尝试推送到Heroku时,它会卡在这里吗?

remote:        [4/4] Building fresh packages...
remote:        Done in 16.30s.
remote:        
remote: -----> Build
remote:        Running build (yarn)
remote:        yarn run v1.22.4
remote:        $ node server.js
remote:        Server started on port 9000 

我在heroku仪表板“查看构建进度”中也看到了相同的内容

这是我的package.json

{
  "name": "firebase-server",
  "version": "1.0.0",
  "main": "index.js",
  "repository": "##########",
  "author": "#######",
  "license": "MIT",
  "scripts": {
    "start": "nodemon --ext js,graphql --ignore data/ server.js",
    "build": "node server.js"
  },
  "dependencies": {
    "@firebase/app": "^0.6.7",
    "@firebase/component": "^0.1.15",
    "apollo-server-express": "^2.15.1",
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "express-jwt": "^6.0.0",
    "firebase": "^7.15.5",
    "graphql": "^15.3.0",
    "jsonwebtoken": "^8.5.1",
    "notarealdb": "^0.2.2"
  },
  "devDependencies": {
    "nodemon": "^2.0.4"
  }
}

我在这个项目中唯一拥有的就是我的server.js。我在想什么或没有做什么。基本上,我试图部署它以为我的项目提供实时API。它在本地工作,但现在我想在heroku上实时工作。

回答1

对于Heroku,如果需要customize your build options(例如,如果您使用的是WebPack或TypeScript),则使用build脚本。问题是您正在使用名为build的脚本,希望启动该应用程序。它正在按预期运行该脚本,但是由于它正在启动该应用程序,因此从您的角度来看,它将“永久挂起”。

如果您将脚本更改为此,我认为这将解决您的问题。在本地,您可以将npm local用于nodemon,而npm start将在Heroku上启动该应用程序。

{
  "scripts": {
    "local": "nodemon --ext js,graphql --ignore data/ server.js",
    "start": "node server.js"
  },
}