我不确定你所说的“本地文件而无需执行"../../../foo/bar"
”是什么意思。
让我解释一下Javascript如何处理导入。这是一个基本的文件夹结构。
C:Users/NAME/Project/randomfolder/bar.js
- Project
- Random Folder
- foo.js
- bar.js
选项1 对于您将要处理的95%情况可能是更好的选项
假设你正在尝试将foo.js导入到bar.js中,我们首先使用.
获取bar.js的当前位置,因此它应该是:
import foo from "./Random Folder/foo.js"
如果你要往另一个方向走,
.
仍然用于表示获取当前文件夹结构中的位置,但是你需要传递第二个
.
,然后加上
/
来返回上一级文件夹。因此,要将 bar.js 导入到 foo.js 中,代码如下:
import bar from "../bar.js"
我们要向上一级文件夹,然后查找我们想要的文件。
选项2
但是,如果您知道您的文件夹结构将非常大,并且您将始终导入几个文件夹,为什么不创建一个变量,然后使用字符串字面值呢?
let folder = `../../../`
import test from `${folder}foo`
你有几个选项来处理你想要做的事情。
选项3 适用于NodeJS和模块
如果你正在使用NodeJS并且想要获取非相对路径,则可以使用app-root-path模块。它允许你始终获取项目根目录,然后相应地挖掘文件。这可以通过字符串字面量实现。
var appRoot = require('app-root-path');
import foo from appRoot + "/foo/bar/folders/bla/bla"
or
import foo from `${appRoot}/foo/bar/folders/bla/bla` <-- string literals
"../../../foo/bar"
,VScode 帮助我完成了这个过程。它在我输入时显示路径建议,我做这个没有任何问题。 - Jeremy Thille