WebStorm - 猫鼬 NPM 包掩码承诺自动完成



我遇到了一个奇怪的问题。

在 WebStorm 中,使用 JavaScript 设置为 ECMAScript 6,如果我安装了 mongoose NPM 模块,并将project-name/node_modules作为库(这是默认行为(,那么mongoose模块似乎用部分模块屏蔽了默认Promise自动完成。

这个部分识别new Promise(),但不自动完成任何Promise.,并告诉我像Promise.all()这样的东西是未导入的。

有没有办法告诉 WebStorm 赋予一件事(内置定义(优先于node_modules这样它就不会让他们覆盖这些核心东西?

奇怪的是,如果我按Ctrl+BPromise的定义,它仍然会把我带到它通常读取的lib.es6.promise.d.ts文件,并且没有提到mongoose定义 Promise。

猫鼬 4.x 破坏了内置类型 Promise 的全局定义。

/nodes_module/mongoose/lib/index.js中,您将找到以下定义:

/**
 * Returns the current ES6-style promise constructor. In Mongoose 4.x,
 * equivalent to `mongoose.Promise.ES6`, but will change once we get rid
 * of the `.ES6` bit.
 *
 * @method Promise
 * @api public
 */

此 JSDoc 样式声明将覆盖 ES6 内置 Promise 类型的全局定义。

您可以在 Webstorm 中从智能感知中排除index.js文件。导航到文件浏览中的文件,然后右键单击并选择"标记为纯文本"。

您应该使用 Mongoose 的 TypeScript 定义,而不是节点模块。这可以通过npm install @types/mongoose安装,或者将其下载为 WebStorm 设置对话框中的 JavaScript 库中的一种类型。

最新更新