Webpack + Typescript + смотреть результаты ошибки TS2554 только при повторной компиляции - PullRequest
0 голосов
/ 15 мая 2018

Программное обеспечение задействовано:

  • 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']
    },
    ...
]

Это компилирует мой проект отлично на одной сборке (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 вызовов, например ::1010*

console.log(`Using locale ${locale}`);

Опять же, если я прерву часы и соберу их с нуля, они будут работать просто отлично. В чем здесь проблема?

Для тестирования я удалил ng-annotate-loader; без изменений.
Это начало происходить после обновления набора инструментов сборки из Webpack 3 до 4 с соответствующими обновлениями до Typescript с 2.3.x. В старых версиях build --watch отлично работает.

1 Ответ

0 голосов
/ 23 мая 2018

Я думаю, что проблема связана с webpack.NewWatchingPlugin (плагином наблюдения по умолчанию), но вы можете заставить веб-пакет использовать старую логику просмотра файлов, если вы добавите новый плагин webpack.OldWatchingPlugin(). OldWatchingPlugin является более стабильным, чем NewWatchingPlugin.

Существует множество причин, по которым webpack может работать некорректно :

  • Если файлы не выводятся (с разными хэшами), скорее всего, это проблема конфигурации, а не проблема с просмотром файлов.
  • Из-за недостаточного количества средств просмотра файлов средство просмотра файлов в Webpack не будет признать изменения.
...