【问题标题】:How to make WebStorm resolve modules which are functions?如何让 WebStorm 解析功能模块?
【发布时间】: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 completioninline 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,他如何使用它与问题无关。我也有这个问题,保罗你有没有进一步了解?
  • 很遗憾没有。但是,我对此的看法是,尽管上述内容在技术上是正确的,但在架构上存在缺陷。模块的拆分过于细粒度,但无论粒度如何,最好还是坚持返回带有方法的普通对象的约定(即使它只是一个方法)。

标签: javascript node.js webstorm jsdoc commonjs


【解决方案1】:

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

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

参考文献

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多