我有以下项目结构:
在我的>>> 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让这么难做呢?
答案 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
。
另请注意,文件扩展名是可选的,通常不用处理。
如果你想使用这种风格并且你的模块加载器支持它,你当然可以自由地这样做,但我想强调你可能会通过使用非标准方法给自己带来痛苦。