答案 0 :(得分:2)
使用此模板创建新项目时,Visual Studio在后台运行npm install
以从npm注册表下载包和类型信息。在下载该类型信息之前,您可能会暂时在编辑器中看到错误。
运行npm install
可能需要2分钟,具体取决于您的网络和磁盘状况。如果您还没有看到npm command completed
消息,那么npm
仍在运行,您需要快速喝咖啡。安装完成后,Visual Studio将自动更新Intellisense错误。
如果您稍等一下并且错误仍然存在,诊断问题的第一步是检查Output
窗口以查看npm install
的进展情况。从顶部菜单中选择View
- > Output
,然后在“输出”窗口中,在标有Npm
的组合框中选择Show output from:
您接下来要做的事情取决于您在输出窗口中看到的内容。
由于a bug in the interaction between npm's staging behavior, graceful-fs
, and the Win32 MoveFileEx
API,npm install
可能会随机失败。您将在“输出窗口”中看到如下所示的错误跟踪:
npm ERR! path C:\Users\ryanca\source\repos\ExpressApp41\ExpressApp41\node_modules\@types\debug\package.json.2541088048
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall rename
npm ERR! Error: EPERM: operation not permitted, rename 'C:\Users\ryanca\source\repos\ExpressApp41\ExpressApp41\node_modules\@types\debug\package.json.2541088048' -> 'C:\Users\ryanca\source\repos\ExpressApp41\ExpressApp41\node_modules\@types\debug\package.json'
npm ERR! { Error: EPERM: operation not permitted, rename 'C:\Users\ryanca\source\repos\ExpressApp41\ExpressApp41\node_modules\@types\debug\package.json.2541088048' -> 'C:\Users\ryanca\source\repos\ExpressApp41\ExpressApp41\node_modules\@types\debug\package.json'
npm ERR! cause:
npm ERR! { Error: EPERM: operation not permitted, rename 'C:\Users\ryanca\source\repos\ExpressApp41\ExpressApp41\node_modules\@types\debug\package.json.2541088048' -> 'C:\Users\ryanca\source\repos\ExpressApp41\ExpressApp41\node_modules\@types\debug\package.json'
npm ERR! errno: -4048,
npm ERR! code: 'EPERM',
npm ERR! syscall: 'rename',
npm ERR! path: 'C:\\Users\\ryanca\\source\\repos\\ExpressApp41\\ExpressApp41\\node_modules\\@types\\debug\\package.json.2541088048',
npm ERR! dest: 'C:\\Users\\ryanca\\source\\repos\\ExpressApp41\\ExpressApp41\\node_modules\\@types\\debug\\package.json' },
npm ERR! stack: 'Error: EPERM: operation not permitted, rename \'C:\\Users\\ryanca\\source\\repos\\ExpressApp41\\ExpressApp41\\node_modules\\@types\\debug\\package.json.2541088048\' -> \'C:\\Users\\ryanca\\source\\repos\\ExpressApp41\\ExpressApp41\\node_modules\\@types\\debug\\package.json\'',
npm ERR! errno: -4048,
npm ERR! code: 'EPERM',
npm ERR! syscall: 'rename',
npm ERR! path: 'C:\\Users\\ryanca\\source\\repos\\ExpressApp41\\ExpressApp41\\node_modules\\@types\\debug\\package.json.2541088048',
npm ERR! dest: 'C:\\Users\\ryanca\\source\\repos\\ExpressApp41\\ExpressApp41\\node_modules\\@types\\debug\\package.json',
npm ERR! parent: 'express-app41' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\ryanca\AppData\Roaming\npm-cache\_logs\2018-03-28T16_48_13_111Z-debug.log
====npm command completed with exit code -4048====
请勿按照npm的建议以管理员身份重新运行该命令;这只会让事情变得更糟。从常规命令行运行npm install
,或者等效地从解决方案资源管理器中的Install Missing npm Packages
节点中选择npm
:
请注意,这将运行npm install
,可能再次失败(但可能不会)。
一小部分用户反复看到npm install
失败。在极不可能的事件中,这会再次失败,您可以尝试关闭解决方案,从命令行运行npm install
,然后重新打开解决方案,但通常这不是必需的。如果即使Visual Studio未运行npm install
失败,那么您可能还有另一个问题,例如损坏的npm缓存,磁盘错误或此答案未涵盖的其他一些npm错误。
EPERM
版本5中引入了导致npm
错误的错误,因此如果这对您造成严重问题,您可以考虑降级到任何4.x.x版本。在撰写本文时,错误尚未得到修复,但希望将来会发布带有graceful-fs
错误修复的新版npm,您只需升级即可。