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

时间:2018-05-15 14:02:22

标签: node.js typescript webpack ts-loader

涉及的软件:

  • webpack 4.8.3
  • typescript 2.8.3
  • ts-loader 4.3.0

Webpack配置:

javac.exe

这会在单个构建(rules: [ { test: /\.ts(x?)$/, exclude: /node_modules/, use: ['ng-annotate-loader', 'ts-loader'] }, ... ] )上编译我的项目

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

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
          ...

它引用的行是包含[./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. 个调用的所有行,例如:

console.log

同样,如果我中止手表并从头开始构建,它可以正常工作。这有什么问题?

为了测试,我删除了console.log(`Using locale ${locale}`); ;没有变化。
这是在将构建工具链从Webpack 3升级到4并从2.3.x升级到Typescript后开始发生的。在旧版本ng-annotate-loader中工作正常。

1 个答案:

答案 0 :(得分:0)

我认为问题与webpack.NewWatchingPlugin(默认观看插件)有关,但如果您添加新的webpack.OldWatchingPlugin()插件,则可以强制webpack使用旧文件观看逻辑。 OldWatchingPluginNewWatchingPlugin更稳定。

webpack可能无法正常工作的原因有多种

  • 如果没有输出文件(具有不同的哈希值),则可能是配置问题,而不是a 文件观看问题。
  • 没有足够的文件监视器导致Webpack中的文件观察者不会 认识到这些变化。