缺少脚本:将应用程序部署到 Heroku 时启动和应用程序崩溃
missing script: start & App crashed when deploying app to Heroku
我是编码新手,但目前正在学习,因为我想在我的 Facebook 页面上创建一个聊天机器人。下面是我在每个 .js 中的脚本以及我之后遇到的错误。输入 heroku open 后,网页显示“应用程序错误
应用程序发生错误,无法提供您的页面。如果您是应用程序所有者,请查看您的日志以了解详细信息。”
希望有人能帮帮我,非常感谢!
index.js
var express = require('express')
var bodyParser = require('body-parser')
var request = require('request')
var app = express()
app.set('port', (process.env.PORT || 5000))
// Process application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({extended: false}))
// Process application/json
app.use(bodyParser.json())
// Index route
app.get('/', function (req, res) {
res.send('Hello world, I am a chat bot')
})
// for Facebook verification
app.get('/webhook/', function (req, res) {
if (req.query['hub.verify_token'] === 'my_voice_is_my_password_verify_me') {
res.send(req.query['hub.challenge'])
}
res.send('Error, wrong token')
})
// Spin up the server
app.listen(app.get('port'), function() {
console.log('running on port', app.get('port'))
})
package.json
{
"name": "node",
"version": "1.0.0",
"description": "facebook chatbot",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"author": "krix",
"license": "ISC",
"dependencies": {
"body-parser": "^1.18.1",
"express": "^4.15.4",
"request": "^2.81.0"
}
}
Procfile.json
web: node index.js
heroku 日志:
2017-09-14T13:32:53.277012+00:00 app[api]: Release v2 created by user network.of.eden@gmail.com
2017-09-14T13:32:53.277012+00:00 app[api]: Enable Logplex by user network.of.eden@gmail.com
2017-09-14T13:32:53.049614+00:00 app[api]: Initial release by user network.of.eden@gmail.com
2017-09-14T13:32:53.049614+00:00 app[api]: Release v1 created by user network.of.eden@gmail.com
2017-09-14T13:33:16.000000+00:00 app[api]: Build started by user network.of.eden@gmail.com
2017-09-14T13:33:44.501803+00:00 app[api]: Release v3 created by user network.of.eden@gmail.com
2017-09-14T13:33:44.550885+00:00 app[api]: Scaled to web@1:Free by user network.of.eden@gmail.com
2017-09-14T13:33:44.501803+00:00 app[api]: Deploy 30d98ae9 by user network.of.eden@gmail.com
2017-09-14T13:33:16.000000+00:00 app[api]: Build succeeded
2017-09-14T13:33:47.445193+00:00 heroku[web.1]: Starting process with command `npm start`
2017-09-14T13:33:51.208413+00:00 app[web.1]:
2017-09-14T13:33:51.208690+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2017-09-14T13:33:51.208802+00:00 app[web.1]: npm ERR! /app/.npm/_logs/2017-09-14T13_33_51_189Z-debug.log
2017-09-14T13:33:51.186998+00:00 app[web.1]: npm ERR! missing script: start
2017-09-14T13:33:51.326957+00:00 heroku[web.1]: State changed from starting to crashed
2017-09-14T13:33:51.329410+00:00 heroku[web.1]: State changed from crashed to starting
2017-09-14T13:33:51.312231+00:00 heroku[web.1]: Process exited with status 1
2017-09-14T13:33:53.384440+00:00 heroku[web.1]: Starting process with command `npm start`
2017-09-14T13:33:56.553788+00:00 app[web.1]: npm ERR! missing script: start
2017-09-14T13:33:56.567775+00:00 app[web.1]:
2017-09-14T13:33:56.567944+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2017-09-14T13:33:56.567995+00:00 app[web.1]: npm ERR! /app/.npm/_logs/2017-09-14T13_33_56_555Z-debug.log
2017-09-14T13:33:56.688362+00:00 heroku[web.1]: Process exited with status 1
2017-09-14T13:33:56.703579+00:00 heroku[web.1]: State changed from starting to crashed
2017-09-14T13:34:34.169385+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=boiling-fortress-15768.herokuapp.com request_id=d93942a9-fddf-426c-8604-39aaf8abe6a7 fwd="58.153.46.198" dyno= connect= service= status=503 bytes= protocol=https
2017-09-14T13:34:34.510184+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=boiling-fortress-15768.herokuapp.com request_id=8b2d01d7-56f8-453b-a355-d58c9fd6ca85 fwd="58.153.46.198" dyno= connect= service= status=503 bytes= protocol=https
2017-09-14T13:37:20.203744+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=boiling-fortress-15768.herokuapp.com request_id=884f9ef7-b7f9-4f49-bd57-6b509ec90f6f fwd="58.153.46.198" dyno= connect= service= status=503 bytes= protocol=https
2017-09-14T13:37:20.530728+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=boiling-fortress-15768.herokuapp.com request_id=3ae40dba-5f53-4436-a406-1c45b6bab5af fwd="58.153.46.198" dyno= connect= service= status=503 bytes= protocol=https
我已经尝试阅读了很多其他人在 github 上提出的问题,但我仍然无法解决问题。我从以下网站学习了设置nodejs和heroku服务器的方法:https://chatbotsmagazine.com/have-15-minutes-create-your-own-facebook-messenger-bot-481a7db54892
真心希望有人能帮我解决问题,万分感谢!!
Procfile文件名应该是Procfile
,我看你的好像是Procfile.json
,可以吗
但是由于您 package.json 有启动脚本,请确保您 git 添加了所有文件并在推送到 Heroku 之前提交了它们
这听起来可能有些重复,但请相信我,事实并非如此。我正在上一门课程,即使不是数千人,也有 100 人有同样的问题。如果您遇到此错误,请查看以下内容。
在您的 package.json 文件中,确保您在脚本中提到了“start”:“node app.js”以及“许可证下的引擎”。这是我的 package.json 的示例代码现在正在运行:
{
"name": "todolist-v1",
"version": "1.0.0",
"description": "todolist",
"main": "app.js",
"scripts": {
"start": "node app.js"
},
"author": "Armaghan",
"license": "ISC",
"engines": {
"node": "14.15.3"
},
"dependencies": {
"body-parser": "^1.19.0",
"ejs": "^3.1.5",
"express": "^4.17.1",
"jquery": "^3.5.1",
"lodash": "^4.17.20a",
"mongoose": "^5.11.14",
"nodemon": "^2.0.7"
}
}
为确保您添加了正确版本的节点,请在终端中使用此命令显示您当前的节点版本。 node --version
- 请确保您的应用正在侦听正确的端口。
将 app.listen 代码替换为以下 heroku 应用程序部署代码:
let port = process.env.PORT;
if (port == null || port == "") {
port = 3000;
}
app.listen(port, function() {
console.log("Server started succesfully");
});
确保提交正确的 git 分支。我忘记提交了一个不同的(实验性)分支,该分支在 package.json 文件中没有更新的更改。要检查您当前的 git 存储库分支,请使用 git branch
显示分支后,您可以使用 git checkout branchname
在分支之间切换
就我而言,我想提交 master,所以我首先使用 git branch master
进入 master,然后使用 git 将文件实际添加到
git add .
(在 space 之后包含点)。
然后使用 git commit -m "your comment"
最后使用以下命令将其再次推送到 Heroku 服务器上。
git push heroku master
推送完成后,在到达 Internet 上的 Web 应用程序地址之前给它几分钟时间总是个好主意,因为它可能需要一些时间来启动和 运行。
- 对于某些使用 MongoDB Atlas 的人来说,如果您只允许一个特定的 IP(仅限您的 IP)访问位于 MongoDB Atlas 的数据库集群,部署仍然会失败并且应用程序会崩溃。因此,请尝试将您的 atlas 帐户中的 'Network Access' 设置更改为“允许从任何地方访问”。这将消除 Heroku 错误日志中有时显示的网络访问错误。
亲切的问候,
我是编码新手,但目前正在学习,因为我想在我的 Facebook 页面上创建一个聊天机器人。下面是我在每个 .js 中的脚本以及我之后遇到的错误。输入 heroku open 后,网页显示“应用程序错误 应用程序发生错误,无法提供您的页面。如果您是应用程序所有者,请查看您的日志以了解详细信息。”
希望有人能帮帮我,非常感谢!
index.js
var express = require('express')
var bodyParser = require('body-parser')
var request = require('request')
var app = express()
app.set('port', (process.env.PORT || 5000))
// Process application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({extended: false}))
// Process application/json
app.use(bodyParser.json())
// Index route
app.get('/', function (req, res) {
res.send('Hello world, I am a chat bot')
})
// for Facebook verification
app.get('/webhook/', function (req, res) {
if (req.query['hub.verify_token'] === 'my_voice_is_my_password_verify_me') {
res.send(req.query['hub.challenge'])
}
res.send('Error, wrong token')
})
// Spin up the server
app.listen(app.get('port'), function() {
console.log('running on port', app.get('port'))
})
package.json
{
"name": "node",
"version": "1.0.0",
"description": "facebook chatbot",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"author": "krix",
"license": "ISC",
"dependencies": {
"body-parser": "^1.18.1",
"express": "^4.15.4",
"request": "^2.81.0"
}
}
Procfile.json
web: node index.js
heroku 日志:
2017-09-14T13:32:53.277012+00:00 app[api]: Release v2 created by user network.of.eden@gmail.com
2017-09-14T13:32:53.277012+00:00 app[api]: Enable Logplex by user network.of.eden@gmail.com
2017-09-14T13:32:53.049614+00:00 app[api]: Initial release by user network.of.eden@gmail.com
2017-09-14T13:32:53.049614+00:00 app[api]: Release v1 created by user network.of.eden@gmail.com
2017-09-14T13:33:16.000000+00:00 app[api]: Build started by user network.of.eden@gmail.com
2017-09-14T13:33:44.501803+00:00 app[api]: Release v3 created by user network.of.eden@gmail.com
2017-09-14T13:33:44.550885+00:00 app[api]: Scaled to web@1:Free by user network.of.eden@gmail.com
2017-09-14T13:33:44.501803+00:00 app[api]: Deploy 30d98ae9 by user network.of.eden@gmail.com
2017-09-14T13:33:16.000000+00:00 app[api]: Build succeeded
2017-09-14T13:33:47.445193+00:00 heroku[web.1]: Starting process with command `npm start`
2017-09-14T13:33:51.208413+00:00 app[web.1]:
2017-09-14T13:33:51.208690+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2017-09-14T13:33:51.208802+00:00 app[web.1]: npm ERR! /app/.npm/_logs/2017-09-14T13_33_51_189Z-debug.log
2017-09-14T13:33:51.186998+00:00 app[web.1]: npm ERR! missing script: start
2017-09-14T13:33:51.326957+00:00 heroku[web.1]: State changed from starting to crashed
2017-09-14T13:33:51.329410+00:00 heroku[web.1]: State changed from crashed to starting
2017-09-14T13:33:51.312231+00:00 heroku[web.1]: Process exited with status 1
2017-09-14T13:33:53.384440+00:00 heroku[web.1]: Starting process with command `npm start`
2017-09-14T13:33:56.553788+00:00 app[web.1]: npm ERR! missing script: start
2017-09-14T13:33:56.567775+00:00 app[web.1]:
2017-09-14T13:33:56.567944+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2017-09-14T13:33:56.567995+00:00 app[web.1]: npm ERR! /app/.npm/_logs/2017-09-14T13_33_56_555Z-debug.log
2017-09-14T13:33:56.688362+00:00 heroku[web.1]: Process exited with status 1
2017-09-14T13:33:56.703579+00:00 heroku[web.1]: State changed from starting to crashed
2017-09-14T13:34:34.169385+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=boiling-fortress-15768.herokuapp.com request_id=d93942a9-fddf-426c-8604-39aaf8abe6a7 fwd="58.153.46.198" dyno= connect= service= status=503 bytes= protocol=https
2017-09-14T13:34:34.510184+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=boiling-fortress-15768.herokuapp.com request_id=8b2d01d7-56f8-453b-a355-d58c9fd6ca85 fwd="58.153.46.198" dyno= connect= service= status=503 bytes= protocol=https
2017-09-14T13:37:20.203744+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=boiling-fortress-15768.herokuapp.com request_id=884f9ef7-b7f9-4f49-bd57-6b509ec90f6f fwd="58.153.46.198" dyno= connect= service= status=503 bytes= protocol=https
2017-09-14T13:37:20.530728+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=boiling-fortress-15768.herokuapp.com request_id=3ae40dba-5f53-4436-a406-1c45b6bab5af fwd="58.153.46.198" dyno= connect= service= status=503 bytes= protocol=https
我已经尝试阅读了很多其他人在 github 上提出的问题,但我仍然无法解决问题。我从以下网站学习了设置nodejs和heroku服务器的方法:https://chatbotsmagazine.com/have-15-minutes-create-your-own-facebook-messenger-bot-481a7db54892
真心希望有人能帮我解决问题,万分感谢!!
Procfile文件名应该是Procfile
,我看你的好像是Procfile.json
,可以吗
但是由于您 package.json 有启动脚本,请确保您 git 添加了所有文件并在推送到 Heroku 之前提交了它们
这听起来可能有些重复,但请相信我,事实并非如此。我正在上一门课程,即使不是数千人,也有 100 人有同样的问题。如果您遇到此错误,请查看以下内容。
在您的 package.json 文件中,确保您在脚本中提到了“start”:“node app.js”以及“许可证下的引擎”。这是我的 package.json 的示例代码现在正在运行:
{ "name": "todolist-v1", "version": "1.0.0", "description": "todolist", "main": "app.js", "scripts": { "start": "node app.js" }, "author": "Armaghan", "license": "ISC", "engines": { "node": "14.15.3" }, "dependencies": { "body-parser": "^1.19.0", "ejs": "^3.1.5", "express": "^4.17.1", "jquery": "^3.5.1", "lodash": "^4.17.20a", "mongoose": "^5.11.14", "nodemon": "^2.0.7" } }
为确保您添加了正确版本的节点,请在终端中使用此命令显示您当前的节点版本。
node --version
- 请确保您的应用正在侦听正确的端口。
将 app.listen 代码替换为以下 heroku 应用程序部署代码:
let port = process.env.PORT; if (port == null || port == "") { port = 3000; } app.listen(port, function() { console.log("Server started succesfully"); });
确保提交正确的 git 分支。我忘记提交了一个不同的(实验性)分支,该分支在 package.json 文件中没有更新的更改。要检查您当前的 git 存储库分支,请使用
git branch
显示分支后,您可以使用 git checkout branchname
在分支之间切换
就我而言,我想提交 master,所以我首先使用 git branch master
进入 master,然后使用 git 将文件实际添加到
git add .
(在 space 之后包含点)。
然后使用 git commit -m "your comment"
最后使用以下命令将其再次推送到 Heroku 服务器上。
git push heroku master
推送完成后,在到达 Internet 上的 Web 应用程序地址之前给它几分钟时间总是个好主意,因为它可能需要一些时间来启动和 运行。
- 对于某些使用 MongoDB Atlas 的人来说,如果您只允许一个特定的 IP(仅限您的 IP)访问位于 MongoDB Atlas 的数据库集群,部署仍然会失败并且应用程序会崩溃。因此,请尝试将您的 atlas 帐户中的 'Network Access' 设置更改为“允许从任何地方访问”。这将消除 Heroku 错误日志中有时显示的网络访问错误。
亲切的问候,