ОШИБКА в Должен иметь исходный файл для рефакторинга
Странная ошибка с компиляцией веб-пакета:
ОШИБКА в Должен иметь исходный файл для рефакторинга.
Глядя на исходный код, я нашел это сообщение в ./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