【发布时间】: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”的导航、代码完成和文档查找的来源?
到目前为止我已经尝试过:
- 在 src (npm init) 中添加 package.json
- 在 https://www.jetbrains.com/idea/help/configuring-javascript-libraries.html 之后的设置/语言和框架中添加 src 作为 Javascript 库
- 模仿 .idea 下面与 node_modules 相关的任何内容
但到目前为止还没有运气。谢谢。
【问题讨论】:
-
由于 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