Angular新手创建项目失败:npm ERR! enoent错误求助
作为Angular新手碰到这种依赖安装报错确实头疼,我来帮你一步步排查解决这个问题。
先拆解下错误根源
从你的错误日志里能看到关键问题:
Error: npm ERR! enoent ENOENT: no such file or directory, rename 'Desktop\angular\angular-intro\node_modules@angular-devkit\build-optimizer\node_modules\typescript' -> 'Desktop\angular\angular-intronode_modules@angular-devkit\build-optimizer\node_modules.typescript.DELETE'
注意看目标路径里的angular-intronode_modules——这里少了一个路径分隔符\,正常应该是angular-intro\node_modules,这说明npm在解析路径时出了故障,大概率是缓存损坏、版本bug或者路径兼容性问题导致的。
结合你的环境(Node v9.9.0、Angular CLI 1.7.3),下面是针对性的解决方案:
方案1:清理npm缓存与残留文件
这是解决这类npm路径问题最常用的第一步:
- 先删除你已经创建的不完整项目文件夹
angular-intro - 打开命令行执行缓存清理:
npm cache clean --force - (可选)手动删除Windows下的npm缓存目录:
C:\Users\lin0x\AppData\Roaming\npm-cache,把里面的文件全部清空
方案2:升级npm到兼容版本
你的Node v9.9.0对应的npm版本可能比较老旧,存在路径解析的bug,建议升级到该Node版本兼容的最新npm版本:
npm install -g npm@6
(注:Node v9.x最高兼容npm v6.x,不能直接安装最新的npm版本)
方案3:升级Angular CLI到同版本补丁
你的Angular CLI是1.7.3,试试升级到同大版本的最新补丁版,修复可能存在的依赖安装问题:
npm uninstall -g @angular/cli npm install -g @angular/cli@1.7.4
方案4:跳过自动安装,手动处理依赖
如果上面的方法还是不行,试试创建项目时跳过npm自动安装,再手动执行安装:
- 创建项目(跳过依赖安装):
ng new angular-intro --skip-install - 进入项目目录:
cd angular-intro - 手动执行依赖安装:
如果还是报错,删除npm installnode_modules文件夹和package-lock.json文件,再重新执行npm install
方案5:升级Node到LTS版本
Node v9.9.0是已经停止维护的旧版本,很多新的npm和Angular CLI特性都不再兼容它,长远来看建议升级到LTS版本(比如Node 10.x或12.x,Angular CLI 1.7.x兼容Node 6.9+,升级后可以正常使用)。升级Node后重新安装Angular CLI,能从根源避免很多兼容性问题。
内容的提问来源于stack exchange,提问作者linux

