Webpack + Typescript + watch仅在重新编译时导致错误TS2554

dec*_*eze 5 node.js typescript webpack ts-loader

涉及的软件:

  • webpack 4.8.3
  • 打字稿2.8.3
  • ts-loader 4.3.0

Webpack配置:

rules: [
    {
        test: /\.ts(x?)$/,
        exclude: /node_modules/,
        use: ['ng-annotate-loader', 'ts-loader']
    },
    ...
]
Run Code Online (Sandbox Code Playgroud)

这可以在单个构建(webpack --mode development)编译我的项目.

但是,在手表模式下构建时会出现错误:

$ webpack --progress --watch --mode development
Webpack is watching the files…

Hash: e8f3fc158b2b6feaad07                                                                  
Version: webpack 4.8.3
Time: 75713ms
Built at: 05/15/2018 3:25:27 PM
          Asset       Size      Chunks             Chunk Names
          ...
Run Code Online (Sandbox Code Playgroud)

(构建很好.现在我更改了一个文件,并重建:)

[./ts/foo/foo.ts] 3.82 KiB {foo} [built] [1 error]
[./ts/foo/controllers/bar.ts] 3.8 KiB {baz} {foo} [built]
[./ts/foo/baz.ts] 4.21 KiB {baz} [built] [1 error]
    + 668 hidden modules

ERROR in .../ts/foo/foo.ts
./ts/foo/foo.ts
[tsl] ERROR in .../ts/foo/foo.ts(84,9)
      TS2554: Expected 0 arguments, but got 1.

ERROR in .../ts/foo/baz.ts
./ts/foo/baz.ts
[tsl] ERROR in .../ts/foo/baz.ts(105,9)
      TS2554: Expected 0 arguments, but got 1.
Run Code Online (Sandbox Code Playgroud)

它引用的行是包含console.log调用的所有行,例如:

console.log(`Using locale ${locale}`);
Run Code Online (Sandbox Code Playgroud)

再说一次,如果我中止手表并从头开始构建,它就可以正常工作.这有什么问题?

为了测试我删除了ng-annotate-loader; 没变.
这是在将构建工具链从Webpack 3升级到4并从2.3.x升级到Typescript后开始发生的.在旧版本中build --watch工作正常.