【问题标题】:WebStorm using ES6 import with CommonJS moduleWebStorm 使用带有 CommonJS 模块的 ES6 导入
【发布时间】:2016-08-31 14:20:51
【问题描述】:

我正在使用 WebStorm 并希望使用 ES6 导入而不是 require。但是,当将 import 与使用 CommonJS 的库(如 lodash)一起使用时,我会收到来自 WebStorm 的警告“无法解析符号”。

代码完美地工作,因为 babel 将导入转换为要求,我只希望 WebStorm 继续运行并且不显示任何错误。我不想部分使用 ES6 导入,部分需要。

我正在使用 WebStorm 版本 2016.2.2。

【问题讨论】:

  • webstorm 可以解析来自 CommonJS 模块的 es6 导入,但仅适用于显式导出模块的情况,例如 module.exports = module_name; 或类似的;但是 lodash 模块以一种棘手的方式暴露出来:var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; var moduleExports = freeModule && freeModule.exports === freeExports; var _ = runInContext(); if (freeModule) { (freeModule.exports = _)._ = _; freeExports._ = _; }.
  • 谢谢,这很有帮助,所以它只是 lodash 问题。你能把它作为一个答案,以便我标记它吗?

标签: webstorm


【解决方案1】:

webstorm 可以解析来自 CommonJS 模块的 es6 导入,但仅适用于显式导出模块的情况,例如 module.exports = module_name; 或类似的;但是 lodash 模块以一种棘手的方式暴露出来:

var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; 
var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; 
var moduleExports = freeModule && freeModule.exports === freeExports; 
...
var _ = runInContext(); 
...
if (freeModule) { (freeModule.exports = _)._ = _; freeExports._ = _; }

这就是 WebStorm 在那里找不到模块的原因...

【讨论】:

  • 使用 Webstorm 2019.3.2 和 ` "lodash": "^4.17.15"` 开箱即用,无需变通方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
相关资源
最近更新 更多