#node.js #typescript #heroku #npm #deployment
#node.js #typescript #heroku #npm #развертывание
Вопрос:
Я пытаюсь развернуть свой TypeScript API на Heroku. У меня запущен сценарий предварительной сборки heroku npm i amp;amp; npm i -g typescript amp;amp; npm run build
и запущен сценарий сборки tsc
.
Итак, я установил несколько новых пакетов с их соответствующими декальрациями типов и получил ошибки от Heroku:
-----> Node.js app detected
-----> Creating runtime environment
NPM_CONFIG_LOGLEVEL=error
NODE_ENV=production
NODE_MODULES_CACHE=true
NODE_VERBOSE=false
-----> Installing binaries
engines.node (package.json): 12.x
engines.npm (package.json): unspecified (use default)
Resolving node version 12.x...
Downloading and installing node 12.18.4...
Using default npm version: 6.14.6
-----> Restoring cache
- node_modules
-----> Prebuild
Running heroku-prebuild
> swooosh-api@1.0.0 heroku-prebuild /tmp/build_fc3ad6d3
> npm i amp;amp; npm i -g typescript amp;amp; npm run build
audited 237 packages in 2.088s
12 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
/tmp/build_fc3ad6d3/.heroku/node/bin/tsc -> /tmp/build_fc3ad6d3/.heroku/node/lib/node_modules/typescript/bin/tsc
/tmp/build_fc3ad6d3/.heroku/node/bin/tsserver -> /tmp/build_fc3ad6d3/.heroku/node/lib/node_modules/typescript/bin/tsserver
typescript@4.0.3
added 1 package from 1 contributor in 1.843s
> swooosh-api@1.0.0 build /tmp/build_fc3ad6d3
> tsc
api/utils/config.ts(1,23): error TS7016: Could not find a declaration file for module 'express-rate-limit'. '/tmp/build_fc3ad6d3/node_modules/express-rate-limit/lib/express-rate-limit.js' implicitly has an 'any' type.
Try `npm install @types/express-rate-limit` if it exists or add a new declaration (.d.ts) file containing `declare module 'express-rate-limit';`
api/utils/config.ts(2,22): error TS7016: Could not find a declaration file for module 'express-slow-down'. '/tmp/build_fc3ad6d3/node_modules/express-slow-down/lib/express-slow-down.js' implicitly has an 'any' type.
Try `npm install @types/express-slow-down` if it exists or add a new declaration (.d.ts) file containing `declare module 'express-slow-down';`
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! swooosh-api@1.0.0 build: `tsc`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the swooosh-api@1.0.0 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /tmp/npmcache.saClh/_logs/2020-10-04T13_30_28_587Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! swooosh-api@1.0.0 heroku-prebuild: `npm i amp;amp; npm i -g typescript amp;amp; npm run build`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the swooosh-api@1.0.0 heroku-prebuild script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /tmp/npmcache.saClh/_logs/2020-10-04T13_30_28_605Z-debug.log
-----> Build failed
We're sorry this build is failing! You can troubleshoot common issues here:
https://devcenter.heroku.com/articles/troubleshooting-node-deploys
If you're stuck, please submit a ticket so we can help:
https://help.heroku.com/
Love,
Heroku
! Push rejected, failed to compile Node.js app.
! Push failed
Я думал, проблема в том, что Heroku кэширует node_modules
папку. Но я отключил это, и у меня были ошибки объявления для каждого отдельного пакета…
Репозиторий GitHub здесь
Как я могу это исправить?
Комментарии:
1.
heroku-prebuild
запускается до того, как Heroku установит зависимости, поэтому вам нужно установить самостоятельно; почему бы вам просто не позволить Heroku установить, а затем запуститьbuild
?2. Итак, команда сборки в package.json выполняется автоматически?
3. Да, смотрите devcenter.heroku.com/articles /…
4. Большое спасибо! Вы хотите опубликовать ответ, чтобы я мог пометить его как правильный?
5. Это не ответ, который не объясняет, почему ваша текущая настройка не работает при запуске самой установки.