Ошибки объявления при замене TypeScript на Heroku

#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. Это не ответ, который не объясняет, почему ваша текущая настройка не работает при запуске самой установки.