#node.js #typescript #express #heroku
Вопрос:
При попытке развернуть сервер Express TypeScript на Heroku я сталкиваюсь с ошибкой. Я побежал heroku logs --tail
, и вот результат:
2021-12-02T21:09:20.152292 00:00 app[web.1]: gt; backend@1.0.0 start /app 2021-12-02T21:09:20.152292 00:00 app[web.1]: gt; ts-node src/index.ts 2021-12-02T21:09:20.152292 00:00 app[web.1]: 2021-12-02T21:09:20.164793 00:00 app[web.1]: sh: 1: ts-node: not found 2021-12-02T21:09:20.176470 00:00 app[web.1]: npm ERR! code ELIFECYCLE 2021-12-02T21:09:20.176764 00:00 app[web.1]: npm ERR! syscall spawn 2021-12-02T21:09:20.176897 00:00 app[web.1]: npm ERR! file sh 2021-12-02T21:09:20.177050 00:00 app[web.1]: npm ERR! errno ENOENT 2021-12-02T21:09:20.184008 00:00 app[web.1]: npm ERR! backend@1.0.0 start: `ts-node src/index.ts` 2021-12-02T21:09:20.184048 00:00 app[web.1]: npm ERR! spawn ENOENT 2021-12-02T21:09:20.184122 00:00 app[web.1]: npm ERR! 2021-12-02T21:09:20.184186 00:00 app[web.1]: npm ERR! Failed at the backend@1.0.0 start script. 2021-12-02T21:09:20.184240 00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above. 2021-12-02T21:09:20.189489 00:00 app[web.1]: 2021-12-02T21:09:20.192700 00:00 app[web.1]: npm ERR! A complete log of this run can be found in: 2021-12-02T21:09:20.192779 00:00 app[web.1]: npm ERR! /app/.npm/_logs/2021-12-02T21_09_20_184Z-debug.log 2021-12-02T21:09:20.372397 00:00 heroku[web.1]: Process exited with status 1 2021-12-02T21:09:20.745674 00:00 heroku[web.1]: State changed from starting to crashed
Из моего собственного исследования было предложено, чтобы я вставил пакет сборки для TypeScript, тот, который появляется heroku buildpacks:search
, — это zidizei/typescript. Я установил это без успеха.
Дальнейшие исследования предложили heroku node/js buildpack. Я побежал heroku buildpacks:set heroku/nodejs
и попробовал это сделать, но безуспешно. Поэтому я переключаюсь обратно на zidizei, все компилируется и строится, за исключением запуска сервера.
Я в замешательстве относительно того, в чем корень проблемы, и я думаю, что, возможно, меня развернули.
Дополнительные шаги, которые я предпринял:
// package.json "scripts": { "test": "echo "Error: no test specified" amp;amp; exit 1", "start": "ts-node src/index.ts", "dev": "ts-node-dev src/index.ts", "build": "tsc", "typeorm": "node --require ts-node/register ./node_modules/typeorm/cli.js", "db:generate-migration": "yarn typeorm -- migrate:generate --config ormconfig.ts --connection --name", "db:run-migration": "yarn typeorm -- migration:run"
// Procfile web: npm start
В качестве альтернативы, есть ли какие-либо сильные претенденты на heroku для размещения экспресс-сервера и базы данных Postgres?
Добавление: Я заметил, что, когда я вошел в среду, используя heroku run bash --app lt;my_app_namegt;
эту папку dist, она создается. Является ли решением указать мой сценарий запуска на что-то вроде node dist/src/index.js?
Ответ №1:
Хорошо, так что для всех, кто читает это.
Моим решением было:
package.json
Все, что мне нужно было сделать, это изменить свой сценарий запуска с
"start": "ts-node src/index.ts",
Для
"start": "node dist/src/index.js",
Похоже, в какой-то момент я развернулся в своей документации и смотрел во все стороны, кроме очевидного.