我正在使用WebStorm 2017.3进行Node.JS开发,我对源根有疑问。
我使用app-module-path
来减少require
语句中文件之间的相对路径数量,以摆脱require('../../../utils/common/stuff')
之类的内容。我所做的是,在我的应用程序的第一行,我打电话
require('app-module-path').addPath(__dirname);
如果require('src/utils/common/stuff')
文件夹位于添加到src
的路径的正下方,则可以执行app-module-path
之类的操作。
但是,在使用这些自定义源根时,虽然代码本身有效,但WebStorm似乎无法解析所需的文件。让我们说我有这个结构:
app.js
node_modules
|- some_module
|- xyz.js
src
|- routes
|- foo.js
|- bar.js
|- utils
|- stuff.js
WebStorm当然可以成功解决以下问题"正常"需要来自foo.js
的声明:
require('./bar')
require('../utils/stuff')
require('some_module/xyz')
前两个当然是相对的,最后一个是因为node_modules
是源根(或任何使用的术语)。
如果我现在将根路径添加到app-module-path
,我的所有文件都可以成功执行:
require('src/utils/stuff')
......我认为看起来比无穷无尽的亲戚../../../../
更好看。但是,虽然代码本身工作正常,因为相对于根文件夹找到src/utils/stuff
,IDE无法解析该文件,这意味着我所需的对象/函数变为灰色而不是紫色/黄色,我无法按Ctrl +单击在其中的任何符号或使用任何其他IDE好东西,这是非常烦人的。
我已经尝试将目录标记为"资源根源" ,但这并没有任何区别;绝对路径所需的文件仍然无法相对于资源根进行解析。基本上我所追求的是能够将其他文件夹配置为node_modules
的行为,并且在Directories
设置中,node_modules
被标记为"已排除&#34 ;所以它肯定必须是一个完全独立的设置,控制哪些文件夹被用作"需要根文件夹"或者"需要搜索路径"。
我还尝试过从<root>/node_modules/src
到<root>/src
的符号链接,这样就可以在require语句中按Ctrl +单击实际文件路径'src/utils/stuff'
,它仍然无法解析所需的对象,并且还会导致WebStorm发出关于未在package.json中列出的模块的警告(当然,这是正确的)。
有没有办法用额外的&#34;要求根文件夹配置WebStorm&#34;?或者是否有比app-module-path
更好的方法来摆脱相对路径地狱&#34;在仍然保留WebStorm解析/索引功能的require语句中?