如何获取Nuxt3中Nitro自动导入的server/models文件夹文件列表
获取Nitro自动导入的server/models文件数组
方法1:直接使用import.meta.glob(推荐)
既然你已经用./server/models/**.ts作为自动导入路径,在服务端代码里可以直接用import.meta.glob匹配相同路径,获取文件列表或模块实例:
// 在服务端文件(如server/api/models.ts、server/middleware/*等)中 const modelFiles = import.meta.glob('./server/models/**.ts', { eager: true }) // 获取所有文件路径的数组 const modelPaths = Object.keys(modelFiles) // 获取所有导入后的模块实例数组 const modelModules = Object.values(modelFiles)
- 加上
{ eager: true }会立即导入所有模块,若需懒加载可移除该选项,此时得到的是返回Promise的函数集合。 - 该方式与Nitro自动导入的路径完全对齐,能保证获取的文件范围和自动导入一致。
方法2:通过Nitro实例的导入元数据获取
若想直接读取Nitro自动导入的模块元数据,可通过useNitroApp()访问Nitro实例:
// 在服务端上下文环境中(如API路由、中间件) const nitroApp = useNitroApp() const autoImports = nitroApp.imports?.modules if (autoImports) { // 筛选出server/models目录下的模块 const modelModules = autoImports.filter(module => module.file.includes('server/models')) // 提取文件路径数组 const modelPaths = modelModules.map(module => module.file) }
注意:该方式依赖Nitro内部元数据结构,不同版本可能存在细微差异,优先推荐方法1。
内容的提问来源于stack exchange,提问作者F.NiX
相关产品推荐
相关产品推荐

