升级Angular至6.x后@angular/router等模块无法识别问题求助
嘿,我来帮你拆解下这个问题——你用ncu -u更新了package.json里的Angular版本,但出现核心模块找不到的情况,通常是这几个常见原因导致的:
依赖未实际安装
ncu -u只是帮你把package.json里的版本号更新到了Angular 6.x,但并没有真正把这些新版本的核心包下载到本地的node_modules目录里。你需要执行npm install(如果用yarn的话就是yarn install),让npm根据更新后的配置去安装对应的@angular/forms、@angular/router等核心依赖。Angular CLI版本不匹配
Angular的核心包和CLI版本需要保持一致,不然很容易出现模块识别异常。你可以先运行ng --version查看当前CLI版本,如果不是6.x系列,就先全局升级CLI:npm install -g @angular/cli@6.x,然后再在项目里安装本地版本:npm install @angular/cli@6.x --save-dev。缓存或IDE模块解析缓存问题
有时候npm的缓存会搞出模块解析的幺蛾子,你可以试试清除缓存:npm cache clean --force,然后删除node_modules文件夹和package-lock.json文件,再重新执行npm install。另外,记得重启你的IDE(比如VS Code),因为IDE的模块缓存可能没同步更新,会误报找不到模块。第三方组件的兼容性问题
你安装的ng2-simple-timepicker可能并不支持Angular 6。有些老的组件库的peerDependencies只限定到Angular 5甚至更低,这种情况下可能会间接干扰核心模块的加载。你可以检查这个包的npm页面或者文档,确认它支持的Angular版本范围,如果不兼容,建议换一个支持Angular 6的时间选择器,比如ngx-bootstrap的timepicker或者Angular Material的日期时间组件。
内容的提问来源于stack exchange,提问作者user9630712

