node-express app.get() 在 Webstorm 中标记为未解析

node-express app.get() marked as unresolved in webstorm

提问人:Jonathan Livni 提问时间:9/30/2014 最后编辑:Jonathan Livni 更新时间:4/30/2019 访问量:16396

问:

如果您遵循 JetBrains 的 WebStorm 中的 Node.js 入门说明,则会正确突出显示特定于 node-express 的代码。但是,如果您创建自己的简单 node-express 项目,例如使用 node-express 指南,则 express 特定功能,例如下划线并标有以下警告:app.get()

Unresolved function or method get()

即使您在以下位置启用以下库,也会发生这种情况:Settings\JavaScript\Libraries

  • Node.js 全局变量
  • Node.js v0.10.31 核心模块
  • express-DefinitelyTyped(需要下载)

如何配置 WebStorm 来解析 node-express 函数,例如 app.get()

Express Webstorm 未解决 - 外部

评论


答:

1赞 lena 9/30/2014 #1

为 Express 项目启用 express-DefinitelyTyped 打字稿库对我有用 - 已成功解决。添加打字稿存根是唯一可能的解决方法,因为 WebStorm 无法理解 express 的定义方式 - 请参阅 https://youtrack.jetbrains.com/issue/WEB-6667#comment=27-470393app.get()

如果添加打字稿存根对您不起作用,请尝试使缓存失效。如果这没有帮助,我建议联系 jetbrains 支持,提供一个示例项目

评论

1赞 Jonathan Livni 9/30/2014
在遵循 node-express 指南时,它是否对您有用?对我来说,添加 express-DefinitelyTyped 确实将默认主题中的颜色从灰色更改为紫色,但是下划线和警告仍然存在。我尝试了缓存失效,但没有帮助。get
0赞 lena 9/30/2014
明白了。问题是 WebStorm 无法将 app.get() 的参数与 express.d.ts 中指定的参数匹配(不希望回调作为第二个参数)。您可以尝试关闭“签名不匹配”检查,以避免看到警告
93赞 Jorge Gil 8/27/2017 #2

在项目中使用 express 类型,而不是 express definitelyTyped:

npm install --save-dev @types/express

或者,对于纱线用户:

yarn add --dev @types/express

评论

0赞 Jorge Gil 10/6/2017
@Jonathan,通过添加 express definitelyTyped 对我来说非常简单,可以修复警告和所有问题。目前与您唯一显着的区别是我使用的是 IDEA 而不是 WebStorm。我们能否验证您是否知道您使用的是 ECMAScript、Node.js 和 express 的哪个版本?我正在使用 ECMAScript 6、Node.js v8.3.0 和 express v4.15.4。我有你在 ECMAScript 5.1 上的填充物 :-)
1赞 e-shfiyut 8/30/2018
这对我有用,但我想在全球范围内使用它,而标志不起作用。所以我添加了另一个答案,其中包含指向允许全局安装它的指南的链接。-g
62赞 e-shfiyut 8/30/2018 #3

这对我来说效果很好。

TL;博士: 你去 --> --> --> ,点击右边的按钮,然后选择“Express”(或你需要的任何其他库)并点击。Settings/PreferencesLanguages and FrameworksJavaScriptLibrariesDownloadDownload and Install

评论

0赞 GoodApple 7/21/2019
我试过了。但是在单击“下载并安装”之后。没有任何回应。我想知道webStorm的新版本(2019.1)是否发生了变化。
0赞 e-shfiyut 7/21/2019
也许您遇到了某种连接问题?这仍然对我有用(我在 IDEA 上,而不是 webStorm,但它应该是一样的......
0赞 GoodApple 7/21/2019
谢谢。解决。我终于发现它(@types/express)已经在列表中,所以没有回应。通过安装所需的软件包,可以解决缺少编码帮助并显示为未解析符号的问题。const { body, validationResult } = require('express-validator/check');const { sanitizeBody } = require('express-validator/filter');