IntelliJ / Webstorm无法找到导入参考

时间:2015-06-17 18:21:17

标签: javascript intellij-idea phpstorm webstorm ecmascript-6

我有以下项目结构:

    • SRC
      • 脚本
        • main.js
        • foo.js

在我的>>> evenlist("2,5,6,8,10".split(','), 2) False >>> evenlist("2,12,6,8,10".split(','), 2) True 文件中,我正在导入main.js,如下所示:

foo.js

当我点击上面的导入语句并转到import 'src/scripts/foo.js' 时,我会收到一条超级有用的消息,上面写着Navigate -> Declaration

这使得使用起来非常令人沮丧,因为编辑器基本上不知道哪些文件导入其他文件。这意味着在移动文件,查找用法等时,我无法使用IDE的有用功能,如搜索引用

如果我将import语句更改为相对语句,则它完全起作用:

Cannot find declaration to go

但是,我们正在努力进行绝对进口,a habit we picked up from writing python apps

我遇到了Webstorm: "Cannot Resolve Directory",这让我想到了import './foo.js' 我的mark目录src。完成后,我可以将Sources Root中的import语句更改为

main.js

嗯,这有点好,因为现在我至少可以import '/scripts/foo.js' //notice the leading forward slash ,但这并不理想,因为现在我无法将Navigate -> Declaration下面的任何目录标记为测试,资源等。< / p>

那么为什么IntelliJ / webstorm让这么难做呢?

2 个答案:

答案 0 :(得分:3)

  

因为现在我无法将src下面的任何目录标记为测试,资源等。

是的,你可以。无法在“项目视图”中标记已标记文件夹的子文件夹。但您可以在项目结构中执行此操作( Ctrl + Shift + Alt + S )。转到Modules,选择您的模块并切换到Sources标签。现在,您可以将src文件夹标记为Sources(您已经做过)并将src/test标记为Tests等。

根据Web Help,在WebStorm中,此设置隐藏在Settings > Directories而不是项目结构中。

以下是仅使用项目视图的另一种解决方案:取消标记源文件夹,标记测试/资源子文件夹,然后再次标记(父)源文件夹。我不确定,为什么它不起作用。

答案 1 :(得分:0)

我非常建议不要在JavaScript代码中使用这种导入方式。虽然可能可行,但相对路径是所有NodeJS代码中的事实标准,并且已经扩展到使用模块系统的所有JS代码。

在当前系统中,以.开头的任何路径都是相对的,任何以/开头的路径都是绝对路径,任何其他路径都被解析为模块。根据该逻辑,相对于名为import 'src/scripts/foo.js'的依赖模块,./scripts/foo.js将被解析为src

另请注意,文件扩展名是可选的,通常不用处理。

如果你想使用这种风格并且你的模块加载器支持它,你当然可以自由地这样做,但我想强调你可能会通过使用非标准方法给自己带来痛苦。