Angular5 + WebWorker启动报错:无法找到引导代码求助
我之前在配置Angular WebWorker的时候也碰到过这个一模一样的报错,太闹心了!结合你说的严格跟着教程走的情况,大概率是WebWorker相关的配置干扰了Angular的入口模块解析,给你几个实测有效的排查和解决步骤:
检查angular.json的入口文件配置
先确认你的angular.json里,对应项目的architect.build.options.main路径是正确的,应该指向src/main.ts(或者你项目实际的入口文件)。有时候添加WebWorker的步骤中不小心改动了这个配置,导致Webpack找不到启动用的bootstrap代码。修正WebWorker的tsconfig配置
打开tsconfig.worker.json,确保里面的compilerOptions和主项目的tsconfig.app.json保持兼容,尤其是module和target选项。另外,这个配置文件的include数组里应该只包含你的WebWorker文件(比如src/**/*.worker.ts),别把主入口文件加进去,避免混淆Webpack的解析逻辑。手动给Angular编译器插件指定entryModule
如果上面两步都没解决问题,那就直接在Webpack配置里明确指定入口模块。在项目根目录创建webpack.config.js(没有的话新建一个),添加如下内容:const AngularCompilerPlugin = require('@ngtools/webpack').AngularCompilerPlugin; module.exports = { plugins: [ new AngularCompilerPlugin({ mainPath: './src/main.ts', entryModule: './src/app/app.module#AppModule', tsConfigPath: './tsconfig.app.json' }) ] };注意把
entryModule的值换成你项目实际的根模块路径和类名——比如如果你的根模块是DashboardModule在src/app/dashboard/dashboard.module.ts,那就要写成./src/app/dashboard/dashboard.module#DashboardModule。清理缓存后重新构建
有时候缓存会导致各种奇怪的配置冲突,先执行npm run clean(如果项目里有这个脚本),或者手动删除node_modules/.cache和dist文件夹,然后再运行npm start试试,说不定就好了。
内容的提问来源于stack exchange,提问作者Mka24

