新 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封装的Express路由 和 express框架路由
node express框架 安装 app路由 正则路由 冒号引导变量 router级路由
在 Express/Node 应用程序中比较/实现 `app.use(cors(corsOptions));` 和 `app.options('*', cors(corsOptions));`