如何让 WebStorm 解析功能模块?

Posted

技术标签:

【中文标题】如何让 WebStorm 解析功能模块?【英文标题】:How to make WebStorm resolve modules which are functions? 【发布时间】:2015-08-15 02:05:23 【问题描述】:

WebStorm 很好地解决了从 CommonJS 模块返回的函数作为方法(并读取与它们关联的 JsDoc),例如:

// utils/valid.js
/**
 * Returns true no matter what.
 * @param htmlElement element
 * @return boolean
 */
function isValid(element) 
    return true;

module.exports.isValid = isValid; // exports property

当另一个文件需要这样的模块时,code completion 和 inline documentation 机制中会正确提供这样的功能。

// main.js
var isValid = require('./utils/isValid').isValid; // works well

但是,当函数作为模块导出直接返回时,这会失败

// utils/valid.js
module.exports = isValid; // exports object is a function

所以当需要这样一个模块时,WebStorm 似乎不知道它是什么:

// main.js
var isValid = require('./utils/isValid'); // doesn't work

这在我们的项目中很常见,将所有module.exports 更改为普通对象不是一种选择。有没有办法在 WebStorm 中解决这个问题?

【问题讨论】:

你如何使用它?请提供完整的样本 我在示例中添加了几行,但是我实际使用模块的方式与问题无关 - 重点是例如。按下 Ctrl+Q 应该会显示模块的内联文档,无论使用何种方式定义它jetbrains.com/webstorm/help/viewing-inline-documentation.html 我同意 Paul S,他如何使用它与问题无关。我也有这个问题,保罗你有没有进一步了解? 很遗憾没有。但是,我对此的看法是,尽管上述内容在技术上是正确的,但在架构上存在缺陷。模块的拆分过于细粒度,但无论粒度如何,最好还是坚持返回带有方法的普通对象的约定(即使它只是一个方法)。 【参考方案1】:

创建一个宏来切换两种语义形式:

<iframe width="854" height="480" src="https://www.youtube.com/embed/J3YX1WIScAk" frameborder="0" allowfullscreen></iframe>

参考文献

Using Macros in the Editor - Help | WebStorm

Komodo Edit autocompletion JS object literal

【讨论】:

以上是关于如何让 WebStorm 解析功能模块?的主要内容,如果未能解决你的问题,请参考以下文章

课时17.WebStorm安装(理解)

WebStorm创建Express项目如何连接MySQL执行增删改查

好用不卡,这些插件和配置让你的 Webstorm 更牛逼!

好用不卡,这些插件和配置让你的 Webstorm 更牛逼!

好用不卡,这些插件和配置让你的 Webstorm 更牛逼!

WebStorm JSDoc 类声明,用于使用 node.js 模块完成代码