import.meta.glob('@/views/*/*.vue') []失效
时间: 2024-05-07 09:21:39 浏览: 16
这个问题可能是由于webpack版本升级导致的,可以尝试使用以下方法解决:
1. 在项目的根目录下创建一个`vue.config.js`文件,并添加以下配置:
```
module.exports = {
configureWebpack: {
resolve: {
symlinks: false,
alias: {
"@": require("path").resolve(__dirname, "./src")
}
}
}
}
```
2. 将原来的`import.meta.glob('@/views/*/*.vue')`修改为`import.meta.globEager('./src/views/*/*.vue')`。
如果以上方法无效,可以尝试升级`@vue/cli`版本或重新安装`node_modules`。
相关问题
import.meta.glob("/src/views/**/*.vue");返回的结果格式是什么样的
`import.meta.glob("/src/views/**/*.vue")` 返回的结果是一个对象,键是匹配的文件路径,值是一个 `Promise` 对象,该对象解析为一个包含模块的对象。
例如,如果你有以下文件结构:
```
└── src/
└── views/
├── Home.vue
├── About.vue
└── sub/
├── SubPage.vue
└── SubSub/
└── SubSubPage.vue
```
使用 `import.meta.glob("/src/views/**/*.vue")` 将返回以下对象:
```javascript
{
'./src/views/About.vue': Promise { <pending> },
'./src/views/Home.vue': Promise { <pending> },
'./src/views/sub/SubPage.vue': Promise { <pending> },
'./src/views/sub/SubSub/SubSubPage.vue': Promise { <pending> }
}
```
你可以使用 `Object.keys()` 方法获取所有匹配的文件路径:
```javascript
const modules = await Promise.all(
Object.keys(import.meta.glob("/src/views/**/*.vue")).map(async (path) => {
const module = await import(path)
return {
path,
module
}
})
)
console.log(modules)
// Output:
// [
// {
// path: './src/views/About.vue',
// module: {...}
// },
// {
// path: './src/views/Home.vue',
// module: {...}
// },
// {
// path: './src/views/sub/SubPage.vue',
// module: {...}
// },
// {
// path: './src/views/sub/SubSub/SubSubPage.vue',
// module: {...}
// }
// ]
```
请注意,`import.meta.glob()` 是一个实验性功能,可能需要在一些浏览器中启用或使用 polyfill。
import.meta.glob('@renderer/views/**/*.vue');
这是一个使用元属性(meta property)的JavaScript代码,用于获取指定目录下的所有vue文件。其中,`import.meta.glob()`函数是ESM(ECMAScript模块)中的一个特殊函数,用于动态导入模块。 `@renderer/views/**/*.vue`是一个Glob模式,用于匹配指定目录下的所有.vue文件。在这个例子中,它将返回一个包含所有匹配文件路径的数组。