Развертывание сервера TypeScript Express в Heroku

#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",  

Похоже, в какой-то момент я развернулся в своей документации и смотрел во все стороны, кроме очевидного.