不需要的节点模块的Heroku部署崩溃

时间:2020-06-18 15:03:07

标签: node.js typescript heroku

我有a typescript express project,需要部署到Heroku。

该项目在本地计算机上运行正常,但是在将其部署到Heroku时会抛出此奇怪错误:

> learning@0.0.0 start /app
> node -r module-alias/register ./dist --env=production
internal/modules/cjs/loader.js:969
throw err;
^
Error: Cannot find module 'tslib'
Require stack:
- /app/dist/index.js
     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:966:15)
     at Function.Module._resolveFilename (/app/node_modules/module-alias/index.js:49:29)
     at Function.Module._load (internal/modules/cjs/loader.js:842:27)
     at Module.require (internal/modules/cjs/loader.js:1026:19)
     at require (internal/modules/cjs/helpers.js:72:18)
     at Object.<anonymous> (/app/dist/index.js:3:17)
     at Module._compile (internal/modules/cjs/loader.js:1138:30)
     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
     at Module.load (internal/modules/cjs/loader.js:986:32)
     at Function.Module._load (internal/modules/cjs/loader.js:879:14) {
   code: 'MODULE_NOT_FOUND',
   requireStack: [ '/app/dist/index.js' ]

令我惊讶的是-整个应用程序代码中都不存在tslib

这意味着它不应是必需的模块,因为节点应负责执行。

根据网络上的建议,

仍然,错误情况保持不变!

任何想法为什么我的部署会崩溃?

1 个答案:

答案 0 :(得分:0)

npm install --save tslib使我克服了这个问题。

对我来说,我必须显式添加tslib作为运行时依赖项。即使tslib在本地可用,但似乎heroku cli进行了摇晃树的过程,其中删除了它认为不必要的节点模块。