【问题标题】:How to make IntelliJ IDEA resolve webpack requires out of node_modules directory?如何让 IntelliJ IDEA 解析 webpack 需要超出 node_modules 目录?
【发布时间】:2015-09-18 18:54:56
【问题描述】:

IntelliJ 无法解析使用 webpack 调用的不在 node_modules 目录中的 javascript 模块

想象一下这个项目结构:

`- project
   |- node_modules
   |  `- react
   |     `- addons.js
   |- webpack.config.js
   |- util
   |  `- tool.js
   `- src
      |- components
      |  `- uno.jsx
      `- two.jsx

这是我的 webpack 配置

// webpack.config.js
var path = require('path'); 
module.exports = {
  resolve: {
    root: [
      path.resolve('./src'),
      path.resolve('./')
    ]
  }
  ...
}

这就是我使用 webpack 的 require 的方式

// two.js
var React = require('react/addons');
var One = require('components/one');
var Tool = require('util/tool');
// dosomething

所以这在我的应用程序中完美运行,IntelliJ 看起来对“react/addons”很满意,如何理解“components/one”和“util/tool”的导航、代码完成和文档查找的来源?

到目前为止我已经尝试过:

但到目前为止还没有运气。谢谢。

【问题讨论】:

  • 由于 Webpack 配置文件中描述的复杂路径解析模式,IJ 无法保证在没有特定 Webpack 支持的情况下解析所有方法。请投票给feature request 并关注更新。 PS:但是对我来说,示例react-starter 项目中的工作非常好。
  • @EkaterinaPrigara 感谢您的提示。将 src 重命名为 app 成功了!但是像import { Row, Column } from 'react-bootstrap'; 这样的东西仍然不起作用,而var reactBootstrap = require('react-bootstrap'); 仍然起作用。这在react-starter 中不起作用。我没有回答我自己的问题,因为我不知道为什么所有这些黑魔法会发生。
  • 这似乎在您使用 resolve.root 方法时有效(不知道为什么它不允许 src。)它也适用于 resolve.alias 但您的别名必须相同作为根文件夹名称,否则它将不起作用:(。
  • 哦,我的朋友。 1年后,对未来仍然没有希望。
  • 你可以对设置进行设置,然后对项目文件夹进行设置,并将一些文件夹设置为 lib 文件夹,这应该可以工作

标签: javascript intellij-idea reactjs webpack react-jsx


【解决方案1】:

我认为这应该可行(至少在我的情况下确实如此)。

在 IntelliJ 中:

  1. 打开项目
  2. File > Project Structure
  3. 在左侧,选择Modules
  4. 从您的目录结构中,选择您的资源所在的文件夹(utilsrc)并将它们标记为 Resources
  5. 点击Apply

您现在应该可以使用代码完成和文档。

【讨论】:

  • 答案是正确的。他们前段时间修复了它,但仍然搞砸了重构。在 mac 中,该选项位于 WebStorm > Preferences > Directories 下。
  • 点击apply后有什么要求吗?我将/src 设为资源根目录,src 包含/utils, /components 等,但是当我点击我的导入路径时,我没有得到智能感知。有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-17
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 2016-10-18
  • 1970-01-01
  • 2019-12-23
相关资源
最近更新 更多