项目场景:
假设这是我的项目结构,我现在需要在aa.js文件中引入并使用aa.geojson文件,
问题:
当我引入路径是const filePath = '../geo/aa.geojson';
的时候,系统报错 "aa.geojson is not Found"
,找不到这个文件
但是如果引入路径是const filePath = '../../src/geo/aa.geojson';
的时候,则正确,下面分析一下原因
原因分析:
'../geo/aa.geojson'
报错原因:
这个路径意味着你希望从 aa.js
所在的目录(src/)
向上移动一级,然后寻找 geo
目录。但是,当你向上移动一级时,你会到达 project-root/
,在 project-root/
中并不存在一个直接名为 geo
的目录,而是有一个 src/
目录,而 geo
目录是在 src/
目录内部的。因此,这个路径是错误的,系统找不到 geo
目录,所以会报错。
'../../src/geo/aa.geojson'
可以找到的原因:
这个路径意味着你希望从 aa.js
所在的目录(src/)
向上移动两级,然后进入 src
目录,再进入 geo
目录。当你从 src/
向上移动两级时,你实际上已经超出了项目根目录,这在文件系统上通常不会导致错误,但是它不是你想要的结果。然而,由于文件系统允许向上超出项目根目录,这个路径实际上会回绕到 src/
目录,然后找到 geo
目录和 aa.geojson
文件。
总结一下
错误路径 '../geo/aa.geojson'
:
- 从 aa.js(位于 src/)向上移动一级会到达 project-root/。
- 在 project-root/ 中没有直接的 geo 目录,因此路径找不到。
正确路径 '../../src/geo/aa.geojson'
:
-
从 aa.js(位于 src/)向上移动两级实际上超出了项目根目录。
-
由于文件系统的回绕行为,这会导致它回到 src/ 目录,并正确找到 geo/aa.geojson。