升级Angular 15后执行ng serve遇@字符模块解析错误求助
升级Angular 15后执行
ng serve报错:Module parse failed: Unexpected character '@' 错误信息
./src/assets/css/sass/themes/vien.dark.bluenavy.scss?ngGlobalStyle:1:0 -Error: Module parse failed: Unexpected character '@' (1:0) File was processed with these loaders: * ./node_modules/resolve-url-loader/index.js * ./node_modules/sass-loader/dist/cjs.js You may need an additional loader to handle the result of these loaders. > @charset "UTF-8"; | /* Vien Main Style |
注意事项
- 应用无自定义Webpack配置
- 已确认应用内无
@charset声明 - 已更新所有依赖至最新版本,错误仍存在
已尝试的解决步骤
- 执行
npm update更新所有依赖 - 在整个应用中搜索
@charset声明
项目angular.json配置
{ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "Vien-Angular": { "projectType": "application", "schematics": { "@schematics/angular:component": { "style": "scss" } }, "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:browser", "options": { "outputPath": "dist/Vien-Angular", "index": "src/index.html", "main": "src/main.ts", "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.app.json", "assets": [ "src/favicon2.png", "src/assets", "src/manifest.webmanifest" ], "styles": [ "src/assets/css/vendor/bootstrap.min.css", "src/assets/css/vendor/bootstrap.rtl.only.min.css", "./node_modules/@glidejs/glide/dist/css/glide.core.min.css", "./node_modules/quill/dist/quill.snow.css", "./node_modules/quill/dist/quill.bubble.css", "./node_modules/@ng-select/ng-select/themes/default.theme.css", "./node_modules/ngx-bootstrap/datepicker/bs-datepicker.css", "./node_modules/nouislider/distribute/nouislider.min.css", "./node_modules/angular-archwizard/archwizard.css", "./node_modules/angular-calendar/css/angular-calendar.css", "./node_modules/ngx-lightbox/lightbox.css", "./node_modules/video.js/dist/video-js.min.css", { "input": "src/assets/css/sass/themes/vien.dark.bluenavy.scss", "bundleName": "dark.blue.navy", "inject": true } ], "scripts": [], "vendorChunk": true, "extractLicenses": false, "buildOptimizer": false, "sourceMap": true, "optimization": false, "namedChunks": true }, "configurations": { "production": { "fileReplacements": [ { "replace": "src/environments/environment.ts", "with": "src/environments/environment.prod.ts" } ], "optimization": true, "outputHashing": "all", "sourceMap": false, "namedChunks": false, "extractLicenses": true, "vendorChunk": false, "buildOptimizer": true, "budgets": [ { "type": "initial", "maximumWarning": "2mb", "maximumError": "5mb" }, { "type": "anyComponentStyle", "maximumWarning": "6kb", "maximumError": "10kb" } ], "serviceWorker": true, "ngswConfigPath": "ngsw-config.json" } }, "defaultConfiguration": "" }, "serve": { "builder": "@angular-devkit/build-angular:dev-server", "options": { "browserTarget": "Vien-Angular:build" }, "configurations": { "production": { "browserTarget": "Vien-Angular:build:production" } } }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n", "options": { "browserTarget": "Vien-Angular:build" } }, "test": { "builder": "@angular-devkit/build-angular:karma", "options": { "main": "src/test.ts", "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.spec.json", "karmaConfig": "karma.conf.js", "assets": [ "src/favicon2.png", "src/assets", "src/manifest.webmanifest" ], "scripts": [] } }, "e2e": { "builder": "@angular-devkit/build-angular:protractor", "options": { "protractorConfig": "e2e/protractor.conf.js", "devServerTarget": "Vien-Angular:serve" }, "configurations": { "production": { "devServerTarget": "Vien-Angular:serve:production" } } } } } }, "cli": { "analytics": false } }
可能的成因与解决方法
- sass-loader版本不兼容:Angular 15对sass-loader版本有特定要求,即便全量更新依赖也可能出现版本不匹配。尝试锁定兼容版本:
npm install sass-loader@13.3.2 --save-dev - resolve-url-loader路径处理异常:在angular.json的
build.options中添加stylePreprocessorOptions,明确SCSS的导入路径:"stylePreprocessorOptions": { "includePaths": [ "src/assets/css/sass" ] } - SCSS文件配置格式问题:尝试将styles中SCSS的对象配置改为字符串形式,简化构建处理逻辑:
"styles": [ // 保留原有CSS文件 "src/assets/css/sass/themes/vien.dark.bluenavy.scss" ] - 清理构建缓存与依赖:执行以下命令彻底清理后重新安装依赖:
ng clean rm -rf node_modules package-lock.json npm install
内容的提问来源于stack exchange,提问作者seifou_eddine
相关产品推荐
相关产品推荐

