VS2017包管理控制台执行npm命令路径异常求助
解决VS2017包管理控制台中npm命令的目录匹配问题
我太懂这种纠结了——用VS的Angular模板搭项目时,默认把node_modules和Angular核心文件放在三级目录,但包管理控制台一打开就定位在sln所在的二级目录,导致npm命令死活找不到正确的依赖位置。下面给你几个实用的解决方案,都是我自己踩坑后总结出来的:
1. 手动切换到三级目录执行命令
这是最直接的办法,打开包管理控制台后,先切换到你的Angular项目所在的三级目录(VS模板默认一般叫ClientApp):
cd .\ClientApp\
之后再执行npm install、ng add @angular/material这类命令就完全没问题了,npm会自动在当前目录识别node_modules和package.json。
2. 用--prefix参数指定工作目录
如果不想每次都手动切换路径,可以直接在npm命令里强制指定三级目录:
npm --prefix ./ClientApp/ install @angular/material
或者启动Angular开发服务器:
npm --prefix ./ClientApp/ run start
这个参数会让npm忽略当前控制台的路径,直接在你指定的目录下执行命令,特别适合偶尔执行一次的场景。
3. 让控制台默认打开到三级目录
VS2017有个很贴心的小技巧:在解决方案资源管理器里选中你的三级Angular项目文件夹,再打开包管理控制台——此时控制台会自动切换到这个选中的目录,直接敲npm命令就行,连cd都省了。
4. 配置npm脚本简化重复操作
如果需要频繁执行命令,可以在二级目录(sln所在目录)新建一个package.json,添加自定义脚本:
{ "scripts": { "ng:install": "cd ./ClientApp && npm install", "ng:start": "cd ./ClientApp && ng serve", "ng:add-material": "cd ./ClientApp && ng add @angular/material" } }
之后在控制台直接执行:
npm run ng:install
就能自动切换到三级目录执行对应命令,再也不用反复敲路径了。
这些方法都能解决你遇到的目录不匹配问题,根据自己的使用习惯选就行,个人推荐前两种,简单高效~
内容的提问来源于stack exchange,提问作者Sumit
相关产品推荐
相关产品推荐

