ОШИБКА в Должен иметь исходный файл для рефакторинга

Странная ошибка с компиляцией веб-пакета:

ОШИБКА в Должен иметь исходный файл для рефакторинга.

Глядя на исходный код, я нашел это сообщение в ./node_modules/@ngtools/refactor.js:

...   
if (!sourceFile) {
  throw new Error('Must have a source file to refactor.');
}

Конфигурация плагина @ngtools webpack довольно проста:

  {
    test: /\.ts$/,
    use: '@ngtools/webpack',
  } 

2 ответа

Не забудьте включить AngularCompilerPlugin с правильным mainPath конфигурация в webpack.config.js, По крайней мере, это то, что исправило это для меня.

plugins: [
  /**
   * Angular's webpack plugin to compile typescript and AOT for templates
   **/
  new ngTools.AngularCompilerPlugin({
    tsConfigPath: path.join(CONTEXT_DIR, "tsconfig.json"),
    mainPath: path.join(CONTEXT_DIR, "src/main.ts")
  }),
...
]

Для тех, кто испытывает боль, пытаясь найти это решение; просто изменить:

new AngularCompilerPlugin({
      mainPath: 'src/main.ts',<----
      tsConfigPath: 'src/tsconfig.app.json',
      skipCodeGeneration: true
    }),

..к этому:

new AngularCompilerPlugin({
      mainPath: 'main.ts',<----
      tsConfigPath: 'src/tsconfig.app.json',
      skipCodeGeneration: true
    }),

Я получил эту ошибку при запуске "ng build --aot=true" в библиотеке angular. Причина заключалась в отсутствии файлов в конфигурации сборки в файле angular.json. Проект создавался как приложение angular, а не как библиотека. Раздел сборки в angular.json указывал на src/main.ts и src/style.css, но в проекте таких файлов не было. Я добавил недостающие файлы, чтобы решить проблему. В качестве альтернативы конфигурация может быть изменена на проект библиотеки.

"build": {
  "builder": "@angular-devkit/build-angular:browser",
  "options": {
    "outputPath": "dist/ui-common",
    "index": "src/index.html",
    "main": "src/main.ts", //missing file
Другие вопросы по тегам