我正在尝试使用VS Code 1.6.1将基于Javascript的快速项目转换为Typescript。我现在可以在Typescript中添加新文件并将它们编译为Javascript。但是,每次我编译一个Typescript文件时,我都会得到一长串错误 - 每个现有(遗留)Javascript文件一个 - 说
错误TS5055:无法写入文件XYZ.js,因为它会覆盖输入文件
如何阻止此事?
我的tsconfig看起来像这样
{ "compilerOptions": { "module": "commonjs", "sourceMap": true, "watch": true, "allowJs": true } }
答案 0 :(得分:5)
这个问题是因为typescript编译器尝试转换所有内容,包括已经是javascript的文件,在这种情况下,可以理解的是它会覆盖它的输入。我发现没有“include”和“exclude”语句的组合可以阻止这种行为。
解决方案是向compilerOptions添加一个新字段“outDir”,所以它看起来像这样
{ "compilerOptions": { "module": "commonjs", "sourceMap": true, "watch": true, "allowJs": true, "outDir": "generated" } }
这将导致tsc将项目中的所有ts和js复制到指定的文件夹。将不再有那些讨厌的TS5055错误。
如果项目中的导入引用都是相对的,那么这应该没问题。否则例如如果您的node.js项目在顶层使用“public”文件夹,则可能必须相应地修改代码中的路径引用。
答案 1 :(得分:1)
如果您不需要编译,而仅检查错误,则可以使用:"noEmit": true
答案 2 :(得分:1)
我的问题有点不同 - 在现有配置中添加一个新的 typescript
文件。
结果发现其中的导入存在问题,导致循环,这就是我的情况下编译失败的原因。
答案 3 :(得分:0)
在tsconfig.json中将allowJs
从true
更改为false
会告诉打字稿编译器不要转换javascript文件。那应该可以解决问题。
https://www.typescriptlang.org/docs/handbook/compiler-options.html#compiler-options
答案 4 :(得分:0)
默认情况下,当生成 url:'/registrate',
d.ts
并获取在输出目录和子目录中找到的所有文件时,也会发生该错误。
假设您的输出位于tsc
目录中,则必须将其排除在tsconfig.json中:
out