import.meta.glob() 只能接受字符串文字

m47*_*470 6 javascript vue.js vite

我有一个 vite vue3 项目。在组件中,我尝试从文件夹中获取所有图像的 URL。当我写作时它有效

const images = import.meta.globEager("/src/resources/projects/images/Project1/*.png")
Run Code Online (Sandbox Code Playgroud)

并在模板中

<img v-for="(item, key) in images" :key="key" :src="key" />
Run Code Online (Sandbox Code Playgroud)

但每个组件都有不同的文件夹,当我编写时

const imageFolderUrl = "/src/resources/projects/images/" + this.projectName + "/*.png";
const image = import.meta.globEager (imageFolderUrl);
Run Code Online (Sandbox Code Playgroud)

我收到错误import.meta.glob()“只能接受字符串文字”。如何从具有动态文件夹名称的文件夹加载所有图像 url?

小智 4

我试图用 Sveltekit 做同样的事情。

有信息https://github.com/vitejs/vite/issues/5478

一种快速解决方法是将任何可能的文件夹名称作为 switch/case 语句中的一种可能性写入。

let images;
switch (imageFolderUrl) {
  case "Project1": images = import.meta.globEager("/src/resources/projects/images/Project1/*.png");
  case "Project2": images = import.meta.globEager("/src/resources/projects/images/Project2/*.png");
  ...
}
Run Code Online (Sandbox Code Playgroud)

它远非漂亮,但如果您只想避免导入所有内容/**/*.png并按路径过滤,它就可以工作。