angular-material - 升级 @angular/material 获取 SyntaxError: Unexpected token '<'
问题描述
目前我正在处理一个遗留的角混合 asp.net core 2.2 web 项目。不是纯 Angular 模板结构,之前的程序员修改项目结构,让 Angular 组件网页与 asp.net cshtml 页面,MVC C# 控制器协同工作。所以他可以从另一个旧项目中重用他以前的 asp.net C# 代码(从后端 jbase 数据库获取数据)。这不是推荐的方式来做角。但他就是这样做的。
我们目前需要将此项目的 Angular 版本从 7.2.1 升级到最新版本。因为我们需要在这个项目中添加新功能。但是我们遇到了一些问题。
随着项目结构的变化,不是纯粹的角度我们不能只遵循谷歌角度升级指南https://update.angular.io/?v=7.2-8.0 升级
例如从版本 7.21。如果我执行此命令,则到版本 8ng update @angular/cli@8 @angular/core@8
下面的高亮部分仍然停留在 7.2.1 版本中,不会在 package.json 中自动更新
请看图1
https://drive.google.com/file/d/1E7LDdwv724mP9WVBrfJVKLO7LAW1C4EW/view?usp=sharing
我必须手动执行以下命令来一一更新每个单独的角度库
npm install --save @angular/animations@8
npm install --save @angular/cdk@8
npm install --save @angular/common@8
npm install --save @angular/compiler@8
npm install --save @angular/core@8
npm install --save @angular/forms@8
npm install --save @angular/material@8
npm install --save @angular/platform-browser@8
npm install --save @angular/platform-browser-dynamic@8
npm install --save @angular/router@8
在我执行上述命令后,请看下图,突出显示的部分更新到版本 8
请看图2
https://drive.google.com/file/d/1tN0NVqky0rvuXR45blNmjpBwSeVHnyzJ/view?usp=sharing
我还注意到将 @angular/marterial 从版本 7.2 更新到版本 8.0
@angular/marterial 导入部分的写法需要改变。您应该从特定组件深度导入,而不是从 @angular/material 导入。例如@angular/material/button。ng update 会自动为您执行此操作。
例如。在@angular/material 7.2.1 中,在 module.ts 中我们像下面这样导入
import { MatDialogModule,MatIconModule,MatNativeDateModule,MatProgressSpinnerModule,MatTooltipModule,
MatStepperModule} from '@angular/material';
请看图 3 https://drive.google.com/file/d/1Nb1S7QzH0B0qcnx-OaOnj9U4jQUB8lRw/view?usp=sharing
在@angular/material 版本 8 之后,我们需要编写如下
import {MatDialogModule} from '@angular/material/dialog';
import {MatIconModule} from '@angular/material/icon';
import { MatNativeDateModule } from '@angular/material/core';
import {MatProgressSpinnerModule} from '@angular/material/progress-spinner';
import {MatTooltipModule} from '@angular/material/tooltip';
import {MatStepperModule} from '@angular/material/stepper';
请看图4
https://drive.google.com/file/d/13lEL-rkKVvC_CPK_SDYeUOJ6fysEkDkn/view?usp=sharing
我还创建了另一个 angular8 小示例项目,上面写着 angular 材质导入,在示例项目中工作正常。
但是在我们的项目中,在我们运行项目之后 dotnet run
我们得到以下错误,这表明
在 Object.eval (SharedModule.ts:6) //第 6 行
在 eval (SharedModule.ts:90) //第 90 行
这两条线有问题。请看图5
https://drive.google.com/file/d/1m8ibzHs6whBnzKAuH000lQKVHHY-q0AD/view?usp=sharing
第 6 行是 import {MatDialogModule} from '@angular/material/dialog';
请看图 6 https://drive.google.com/file/d/1i-_By1bDu4mmySiVRS13h2PhwSzUNrPD/view?usp=sharing
第 90 行是导出类 SharedModule {}
请看图7
https://drive.google.com/file/d/1htQTNXZd_bcFCk4QxKn0nSRGi1jCLL6s/view?usp=sharing
目前我不知道为什么 import @angular/material 有那个错误信息。
我已经测试了以下场景
如果我从@angular/material 中删除了所有导入,则项目可以正常运行。
但如果我只导入一个 Angular 按钮 import {MatButtonModule} from '@angular/material/button'; 然后项目失败了。我创建了简单的示例项目总是可以正常工作。
我删除了 node_modules 文件夹,重新安装 npm install,项目仍然有同样的错误。
当我安装@angular/material npm install --save @angular/material@8 时,终端中没有出现任何错误。
就在项目中,从 v7.21 升级到 v8 后出现上述错误。
解决方案
你在NgModule
in做出口吗app.module.ts
推荐阅读
- javascript - 如何在本地运行?
- core-data - SwiftUI 核心数据预览不能跨平台工作
- java - 如何在 Spring Batch 中为 JSON 文件创建阅读器
- reactjs - ReactJS + Firestore - 使用文档分页似乎不起作用
- google-bigquery - BigQuery 存储过程以什么用户身份运行?
- twitter-bootstrap - 只有其他所有链接在 Bootstrap 5 弹出窗口中都能正常工作
- html - 在部分内随机排序/排序项目
- python - 一列文本之间的空间余弦相似度
- javascript - 所以我正在尝试使用 Math.cbrt 并且我的代码没有按预期工作
- html - 我无法在下拉菜单中正确使用 z-index 来正确显示溢出