在Visual Studio 2015 Update 3中的Typescript 2.2.1项目中,我在错误列表中得到了数百个错误,例如:

不能写入文件'C:/{{my-project}}/node_modules/buffer-shims/index.js',因为它会覆盖输入文件。

它一直都是这样的。它实际上并没有阻止构建,并且一切都可以正常工作,但是错误列表会分散注意力,并且很难在发生“真正的”错误时定位它们。

这是我的tsconfig。json文件

{
  "compileOnSave": true,
  "compilerOptions": {
    "baseUrl": ".",
    "module": "commonjs",
    "noImplicitAny": true,
    "removeComments": true,
    "sourceMap": true,
    "target": "ES5",
    "forceConsistentCasingInFileNames": true,
    "strictNullChecks": true,
    "allowUnreachableCode": false,
    "allowUnusedLabels": false,
    "noFallthroughCasesInSwitch": true,
    "noImplicitReturns": true,
    "noImplicitThis": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,

    "typeRoots": [],
    "types": [] //Explicitly specify an empty array so that the TS2 @types modules are not acquired since we aren't ready for them yet.
  },
  "exclude": ["node_modules"]
}

我怎样才能消除这些错误呢?


当前回答

正如GitHub问题中所建议的那样,理解这个问题的最佳选择是使用tracerresolution标志启动tsc命令

tsc - traceResolution

其他回答

在我的实例中,我使用了outDir选项,但没有从输入中排除目标目录:

// Bad
{
    "compileOnSave": true,
    "compilerOptions": {
        "outDir": "./built",
        "allowJs": true,
        "target": "es5",
        "allowUnreachableCode": false,
        "noImplicitReturns": true,
        "noImplicitAny": true,
        "typeRoots": [ "./typings" ],
        "outFile": "./built/combined.js"
    },
    "include": [
        "./**/*"
    ],
    "exclude": [
        "./plugins/**/*",
        "./typings/**/*"
    ]
}

我们所要做的就是排除outDir中的文件:

// Good
{
    "compileOnSave": true,
    "compilerOptions": {
        "outDir": "./built",
        "allowJs": true,
        "target": "es5",
        "allowUnreachableCode": false,
        "noImplicitReturns": true,
        "noImplicitAny": true,
        "typeRoots": [ "./typings" ],
        "outFile": "./built/combined.js"
    },
    "include": [
        "./**/*"
    ],
    "exclude": [
        "./plugins/**/*",
        "./typings/**/*",
        "./built/**/*" // This is what fixed it!
    ]
}

这个配置适合我

"allowJs": true

添加"outDir": "。/dist”到tsconfig中的compilerOptions。json为我工作时,我得到这个错误。我很确定这只是Visual Studio Code TypeScript扩展输出这个错误。我使用ts-loader与Webpack,而不是tsc编译器直接,所以我不必指定outDir,因为Webpack配置控制,但如果这使VS Code扩展高兴,这是好的。

我在一个相当大的单仓库中开发时遇到了这些错误,其中各种包依赖于对其他TypeScript包的引用。虽然错误不会影响构建或运行时,但当打开tsconfig时,它们仍然存在于VS Code问题面板中。json文件。

上面的一些答案确实帮助我减少了错误的数量,但直到我重新启动VS Code TypeScript服务器,所有的错误似乎都神奇地消失了。

在VS Code中:

Shift + command + P打开Mac上的命令托盘。开始输入“TypeScript”,并导航到“TypeScript: Restart TS Server”。按回车键

如果幸运的话,已修复的错误应该会自动消失。

这有几个可能的原因。

In your tsconfig.json: Set outDir to "dist" or the name of another same-level folder. (prefixing with './' is unnecessary). This is where the build files go. Set allowJs to false or delete the line. Note: enabled, allowJs will conflict with the declaration setting/flag. It isn't enabled by default. Include "dist" (or your build folder) in exclude. In your package.json: Set main to "index" or some other chosen name. Don't prefix with the build folder (eg "dist/index"), nor the unnecessary "./". Set types (modern alias of typings) to "index". Adding the extensions (.d.ts or .js) is unnecessary.

虽然你可以有一百万种不同的方法,但是为了简单和加深理解,最好一开始坚持常用的实践——比如使用“dist”,简单的tsconfig。Json和包。Json文件在树的同一级别,以此类推。当然,查找node_modules的文件也会加深您的理解,但生活中还有更有意义的事情。