这样动态加载css 打包后会找不到css const styles = import.meta.glob(["@/assets/**/*.css"]); export const loadStyle = (styleName: string): string => { for (const name in styles) { if (name.endsWith(styleName) || name.endsWith(`${styleName}.css`)) { console.log(styles[name]) return import.meta.env.DEV ? name : name.replace("src/", ""); } } return styleName; };
时间: 2024-04-18 12:26:33 浏览: 410
如果您在Vue应用中使用动态加载CSS,并且在打包后无法找到CSS文件,这可能是因为在打包过程中,动态加载的CSS文件路径发生了变化。
为了解决这个问题,您可以尝试更新您的代码如下:
```javascript
const styles = import.meta.globEager("../assets/**/*.css");
export const loadStyle = (styleName) => {
for (const name in styles) {
if (name.endsWith(styleName) || name.endsWith(`${styleName}.css`)) {
console.log(styles[name]);
return import.meta.env.DEV ? name : name.replace("../", "");
}
}
return styleName;
};
```
更新的改动包括:
1. 使用`import.meta.globEager`而不是`import.meta.glob`。`import.meta.globEager`会在构建时将所有匹配的CSS文件导入,而不是在运行时动态加载。这样可以确保所有匹配的CSS文件都会被正确地打包到最终的构建文件中。
2. 更新CSS文件路径的处理方式。使用`../`替换`src/`来适应打包后的文件路径。
请注意,这种处理方式假设您的CSS文件位于`../assets/`目录下。如果实际路径不同,请根据您的项目结构进行相应的调整。
通过这些改动,您应该能够正确地打包和加载CSS文件了。希望对您有帮助!如有其他问题,请随时追问。
阅读全文