我正在尝试将我的node.js应用程序部署到heroku

ijnw1ujt  于 2022-11-13  发布在  Node.js
关注(0)|答案(3)|浏览(170)

我尝试将我的node.js应用程序部署到Heroku中,但当我尝试将项目推送到Heroku分支时,我得到:

remote: node_modules/@types/jsdom/base.d.ts:192:18 - error TS2411: Property '["Infinity"]' of type 'number' is not assignable to 'number' index type 'Window'.
remote: 
remote: 192         readonly ["Infinity"]: number;
remote:                      ~~~~~~~~~~~~
remote: node_modules/@types/jsdom/base.d.ts:193:18 - error TS2411: Property '["NaN"]' of type 'number' is not assignable to 'number' index type 'Window'.
remote: 
remote: 193         readonly ["NaN"]: number;
remote:                      ~~~~~~~
remote: 
remote:        Found 2 error(s).

Node.Js版本:v17.0.1 Npm版本:8.1.0
我用nest.js框架开发了这个项目,实际上当我在本地环境中启动时没有问题。

yxyvkwin

yxyvkwin1#

根本的问题是最近更新了一个可传递的依赖项,并且该更新与类型脚本不兼容。另外,我猜您的项目没有使用锁文件,如果是这样的话,那就不太理想了。
对于我的nestjs项目来说,这个问题是jest的一个可传递的依赖关系。如果你正在使用jest,请查看这个github的讨论,以获得更新,如果你不能立即开始使用一个锁定文件,也许还可以获得一些解决这个问题的技巧https://github.com/facebook/jest/issues/12098(似乎在基础回购中打开了PR,但可能需要一些时间才能获得批准并更新到npm的注册表中。https://github.com/DefinitelyTyped/DefinitelyTyped/pull/57432
如果你的git仓库中没有提交package-lock.json文件,你应该添加它。Heroku使用package.json或package-lock.json来为你安装依赖项,如果你想得到可重复的构建,你一定要使用package-lock.json。如果你本地有一个package-lock.json文件,而它当前被git忽略,你可以删除.gitignore文件中的条目。
有关它如何处理package-lock.json的更多信息,请参见Heroku的文档:https://devcenter.heroku.com/articles/nodejs-support#package-installation
Heroku使用lockfiles(package-lock.json或yarn.lock)来安装所需的依赖树,所以一定要将这些文件签入git,以确保不同环境下的依赖版本相同。如果您使用npm,Heroku将使用npm ci来设置构建环境。

umuewwlo

umuewwlo2#

在tsconfig.json中使用选项skipLibCheck: true可能是一个临时的解决方案。

y4ekin9u

y4ekin9u3#

这对我来说仍然是一个Jest V29的问题。Microsoft even does some crazy workaround来修复这个问题。
将Jest和相关依赖项恢复为v27.3.1,直到修复。

相关问题