我有一个用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上实时工作。
对于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"
},
}