Heroku 不部署 TypeScript 应用程序
Heroku doesn't deploy TypeScript Application
问题
我制作了一个打字稿 discord 机器人并将其托管在 heroku 上。编译时出现以下错误,然后 运行 它。
- 错误:
Starting process with command `npm run dev`
State changed from starting to up
Process exited with status 127
> bot@1.0.0 dev
> run-s build start
sh: 1: run-s: not found
State changed from up to crashed
- Procfile:
worker: npm run dev
package.json
:
// ...
"scripts": {
"build": "tsc",
"watch": "tsc -w",
"start": "node dist/index.js",
"dev": "run-s build start",
"watch:start": "tsc-watch --onSuccess \"node ./dist/index.js\"",
"format": "prettier --write \"src/**/*.ts\""
},
"engines": {
"node": "17.8.0"
}
// ...
信息
我正在通过 Heroku CLI 进行部署。
git push heroku main
开箱即用,在没有 Procfile
的情况下,Heroku 将在构建时(部署时)运行 您的 build
脚本和 start
在 运行 时间(当你的测功机启动时)作为 web
测功机编写脚本。
你的 build
和 start
脚本是有意义的,前者 运行ning tsc
将你的 TypeScript 编译为 JavaScript 后者 运行宁编译JavaScript。
因为你想要运行一个worker
进程而不是一个web
进程你需要一个Procfile
,但是这个把工作交给了错误的脚本, 使用 dev
而不是 start
:
worker: npm run dev
您的 dev
脚本试图在 运行 时构建您已经构建的应用程序,这是一个问题,原因如下:
- 眼前的问题是
run-s
不可用,可能是 because it was declared as a dev dependency
- 此处构建是多余的,因为您的应用程序已在部署期间编译,
- 如果它能正常工作,每次你的 dyno 重新启动,你扩展你的应用程序等时,它都会显着延迟启动,
- 与
run-s
一样,tsc
可能在 运行 时不可用(而且不应该),因为它被声明为开发依赖项
使用您的 start
脚本而不是您的 dev
脚本:
worker: npm run start
问题
我制作了一个打字稿 discord 机器人并将其托管在 heroku 上。编译时出现以下错误,然后 运行 它。
- 错误:
Starting process with command `npm run dev`
State changed from starting to up
Process exited with status 127
> bot@1.0.0 dev
> run-s build start
sh: 1: run-s: not found
State changed from up to crashed
- Procfile:
worker: npm run dev
package.json
:
// ...
"scripts": {
"build": "tsc",
"watch": "tsc -w",
"start": "node dist/index.js",
"dev": "run-s build start",
"watch:start": "tsc-watch --onSuccess \"node ./dist/index.js\"",
"format": "prettier --write \"src/**/*.ts\""
},
"engines": {
"node": "17.8.0"
}
// ...
信息
我正在通过 Heroku CLI 进行部署。
git push heroku main
开箱即用,在没有 Procfile
的情况下,Heroku 将在构建时(部署时)运行 您的 build
脚本和 start
在 运行 时间(当你的测功机启动时)作为 web
测功机编写脚本。
你的 build
和 start
脚本是有意义的,前者 运行ning tsc
将你的 TypeScript 编译为 JavaScript 后者 运行宁编译JavaScript。
因为你想要运行一个worker
进程而不是一个web
进程你需要一个Procfile
,但是这个把工作交给了错误的脚本, 使用 dev
而不是 start
:
worker: npm run dev
您的 dev
脚本试图在 运行 时构建您已经构建的应用程序,这是一个问题,原因如下:
- 眼前的问题是
run-s
不可用,可能是 because it was declared as a dev dependency - 此处构建是多余的,因为您的应用程序已在部署期间编译,
- 如果它能正常工作,每次你的 dyno 重新启动,你扩展你的应用程序等时,它都会显着延迟启动,
- 与
run-s
一样,tsc
可能在 运行 时不可用(而且不应该),因为它被声明为开发依赖项
使用您的 start
脚本而不是您的 dev
脚本:
worker: npm run start