通过cTag导航ES6

问题描述 投票:3回答:1

我的.cTags在大多​​数情况下都能正常工作。但是,在下面提到的情况下,它无法按预期工作。

目录结构

root
 - a
   - foo.js
   - bar.js
   - index.js
 - b
   - current-file.js

current-file.js

import { foo } from './a'

foo()

index.js

export { default as foo } from './foo'

foo.js

const foo = () => 'foo'

export default foo

当我试图从[[current-file.js跳转到foo的定义时,它导航到a / index.js而不是a / foo.js]

javascript vim ctags
1个回答
4
投票
我认为这不是对cTag的限制,而是对ES6语言本身的限制。

大括号导入将首先查找名为a的文件,如果找不到,它将使用其index.js文件(自动解析,例如a/index.js)查找名为'a'的目录。它不会在目录中查找文件。

花括号仅从文件中查找非默认导出,并且不通过目录查找。

[Example(注意:目录a已重命名为c,因为codeandbox在其引擎中保留了名称a)]

您可以尝试删除/c.js文件来加载c/index.js文件。

此外,我建议您使用this thread,它可以为您提供有关js中大括号的更多提示

您可能可以使用fs.readDir API来读取目录,并自动require /导出index.js中的文件;但是index.js将被加载。

© www.soinside.com 2019 - 2024. All rights reserved.