Rome配置按需加载CSS时为什么报模块未找到?
在用Rome打包项目时,想通过import()按需加载CSS文件,但配置了rome.config.js后总报Cannot find module错误。按文档加了css-loader和style-loader到插件里,但控制台还是提示找不到CSS模块:
export default {
pipeline: {
css: {
process: [
require('css-loader'),
require('style-loader')
]
}
}
}
已经确认依赖都安装了,其他JS文件按需加载没问题,唯独CSS报错。是不是Rome的配置语法有特殊要求?或者需要额外的解析插件?
你的问题出在缺少对CSS模块的解析规则。Rome需要显式声明如何处理非JS模块,比如CSS。你可以通过添加
resolver.extensions来扩展模块解析规则,明确告诉Rome哪些文件后缀可以被识别为模块。试试调整你的rome.config.js,像这样:
另外,动态导入CSS时,建议检查一下你的CSS文件路径是否正确。Rome对路径的解析是区分相对路径和绝对路径的,如果你用的是相对路径,确保前面有
./或../,否则会被当成第三方模块解析,自然就会报找不到模块的错误。还有一点要注意,css-loader和style-loader的版本最好和Rome兼容。如果还是有问题,建议查一下Rome官方文档里关于插件兼容性的说明,有时候版本不匹配也会导致类似问题。
总之,核心就是两点:一是给resolver加extensions,二是检查路径写法。这两点都做到的话,问题应该就能解决了。