2

我刚刚使用“ Basic Node.js Express 4 Application ”模板创建了一个新项目,该项目似乎已经有错误:

在此处输入图像描述

这是 Visual Studio 中的错误吗?如何修复错误?

4

1 回答 1

2

等一下

当您使用此模板创建新项目时,Visual Studionpm install会在后台运行以从 npm 注册表下载包和类型信息。在下载该类型信息之前,您可能会暂时在编辑器中看到错误。

运行npm install可能需要长达 2 分钟,具体取决于您的网络和磁盘条件。如果您还没有看到该npm command completed消息,那么npm它仍在运行,您需要去喝杯咖啡。安装完成后,Visual Studio 将自动更新 Intellisense 错误。

等待无效?

如果您稍等片刻并且错误仍然存​​在,那么诊断问题的第一步是检查Output窗口以了解npm install情况如何。从顶部菜单中选择View-> Output,然后在输出窗口中,选择Npm标有Show output from: 显示 npm 状态的输出窗口

您接下来要做什么取决于您在输出窗口中看到的内容。

再试一次

由于npm 的暂存行为graceful-fs和 Win32 MoveFileExAPI之间的交互存在错误,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 Packagesnpm解决方案资源管理器中的节点中选择: 上下文菜单的图像

请注意,这将运行npm install,它可能会再次失败(但可能不会)。

关闭解决方案

一小部分用户npm install反复失败。万一再次失败,您可以尝试关闭解决方案,npm install从命令行运行,然后重新打开解决方案,但通常这不是必需的。如果npm install即使 Visual Studio 未运行也失败,那么您可能还有另一个问题,例如损坏的 npm 缓存、磁盘错误或此答案未涵盖的其他一些 npm 错误。

考虑降级或升级 npm

导致错误的EPERM错误是在版本 5 中引入的npm,所以如果这对您造成严重问题,您可以考虑降级到任何 4.xx 版本。在撰写本文时,该错误尚未修复,但希望将来graceful-fs会发布带有错误修复的新版本 npm,您可以简单地升级。

于 2018-03-28T16:58:06.200 回答