【问题标题】:No custom directive completion (PhpStorm 2018.3)没有自定义指令完成 (PhpStorm 2018.3)
【发布时间】:2019-04-29 02:08:23
【问题描述】:

我的 IDE 和在 Angular 1.4ES 5.1 下运行的项目再次陷入困境。到目前为止,项目都是用一些 gulp 任务构建的,以及用于 Angular 实现的 AMD 模块 + RequireJS + bower。一切都以正确的方式进行(自定义指令自动完成)。

我已经在 webpack 4 下迁移了整个东西,所有东西都由一些 module.exportsrequire('lib') 管理(在节点 8 下)。

现在我的自定义指令不再自动完成。

  • 是的,AngularJS 插件已在设置中启用(与 IDE 捆绑在一起)
  • JS语言版本为5.1
  • 我包含的库是HTMLziiip/node_modules
  • 我已经尝试在这些库中以调试模式包含 angular.js 文件,但它没有任何改变,即使在“无效缓存/重启”事件发生之后也是如此。

我附上了我的实现的一个小例子,请随时发表评论,但我唯一的问题是:

  • 为什么 IDE 无法识别我的 customDirective

  • 为什么我所有的require 总是带有警告标签并告诉我“元素未导出”

  • 为什么document 也被标记

整个项目在运行 webpack 开发服务器时正在运行,我附上了 sample

【问题讨论】:

    标签: angularjs webpack phpstorm webstorm webpack-4


    【解决方案1】:
    • 要识别您的指令,您必须明确指定 restrict 值 (WEB-36024):

    module.exports = angular .module('app.ziiip', []) .directive('customDirective', function () { return { restrict: 'E', template: require('./partials/custom-directive.html') }; });

    • 设置 | 中启用 Node.js 编码帮助语言和框架 | Node.js 和 NPM 应该修复 require 的警告;但我建议禁用 JavaScript | Node.js |缺少 require() 语句JavaScript |一般 |缺少导入语句检查:当您在 CommonJS 上下文中工作时,IDE 期望模块被显式导出/导入

    • node_modules/angular/angular.js中,参数记录为@param {string|DOMElement} elementdocumentlib.dom.d.ts中解析为var document: Document; PhpStorm 无法匹配类型,因此会显示警告。您可以通过添加// noinspection JSCheckFunctionSignatures 评论来抑制它

    【讨论】:

    • 嗯,是的,它修复了我在示例中公开的自定义指令的错误,谢谢解释。尽管如此,它不适用于另一个指令,并且它具有明确的限制值:(
    • 但是对于这个我导出整个东西,我只在全局 index.js 中通过 require() 调用 module.exports = { myDirective: function myDirective() { return { restrict: 'E' , [other options] } } } 和 index.js .directive('myDirective', require('./directives/commonDirectives').myDirective) 声明它
    • 我会补充一点,对于那些常见的指令,我有一个template: require(path/to/html/partial.html),也许这就是为什么?
    • 不支持这种风格的定义指令,请投票给youtrack.jetbrains.com/issue/WEB-18525 以获取任何进展通知
    猜你喜欢
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 2017-03-14
    • 2011-11-29
    • 2023-03-21
    相关资源
    最近更新 更多