新 Node Tools Express App 项目中的 Intellisense 错误

Posted

技术标签:

【中文标题】新 Node Tools Express App 项目中的 Intellisense 错误【英文标题】:Intellisense errors in new Node Tools Express App project 【发布时间】:2018-09-07 11:28:28 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

等一下

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

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

等待没有用?

如果您稍等片刻,错误仍然存​​在,诊断问题的第一步是检查Output 窗口以查看npm install 的运行情况。从顶部菜单中选择View -> Output,然后在输出窗口中,在标记为Show output from: 的组合框中选择Npm

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

再试一次

由于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,或者等效地,从解决方案资源管理器中的npm 节点中选择Install Missing npm Packages

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

关闭解决方案

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

考虑降级或升级 npm

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

【讨论】:

以上是关于新 Node Tools Express App 项目中的 Intellisense 错误的主要内容,如果未能解决你的问题,请参考以下文章

node.js之express中app.use

对比原生Node封装的Express路由 和 express框架路由

node express新项目默认主文件app.js

node express框架 安装 app路由 正则路由 冒号引导变量 router级路由

在 Express/Node 应用程序中比较/实现 `app.use(cors(corsOptions));` 和 `app.options('*', cors(corsOptions));`

怎么让新建的express包用公共的node