【发布时间】:2015-09-03 03:34:06
【问题描述】:
我的项目结构如下:
- 根
- 源
- 脚本
- main.js
- foo.js
- 脚本
- 源
在我的main.js 文件中,我正在导入foo.js,如下所示:
import 'src/scripts/foo.js'
当我单击上面的导入语句并转到 Navigate -> Declaration 时,我收到一条非常有用的消息,上面写着 Cannot find declaration to go。
这使得使用它非常令人沮丧,因为编辑器基本上不知道哪些文件导入了其他文件。这意味着在移动文件、查找用法等时,我无法使用 IDE 的有用功能,例如 搜索参考。
如果我将导入语句更改为相对,它完全可以工作:
import './foo.js'
但是,我们正在努力实现绝对导入,a habit we picked up from writing python apps。
我遇到了Webstorm: "Cannot Resolve Directory",这让我想到了将mark 我的src 目录作为Sources Root。之后,我可以将 main.js 中的导入语句更改为
import '/scripts/foo.js' //notice the leading forward slash
嗯,这有点好,因为现在我至少可以Navigate -> Declaration,但这并不理想,因为现在我无法将src 下的任何目录标记为测试、资源等。
那么为什么 IntelliJ/webstorm 让这件事变得如此困难?
【问题讨论】:
-
相对路径是 JS 社区的事实标准,您建议的格式意味着在名为
src的模块中找到scripts/foo.js。你将如何以你提议的风格引用外部模块?对我来说,这似乎是一个很好的例子,偏离标准只是在寻求收益微乎其微的问题。 -
这是一个公平的观点,我想我不知道/认为我使用的格式偏离了导入依赖项的规范方式。我在 github 上进行了一些探索,你是对的,大多数人都使用相对路径。我相信答案是远离绝对路径。如果您在下面提供答案,我会接受。
标签: javascript intellij-idea phpstorm webstorm ecmascript-6