Laravel 8引入resources/css下自定义general.css找不到问题求解
问题产生原因
asset() 辅助函数默认指向项目的 public 目录,只有存在于public目录下的资源才能被正常访问。app.css可以正常加载,是因为Laravel Mix默认配置了对resources/css/app.css的编译规则,编译后会自动输出到public/css/app.css。
从你提供的编译输出可以看到,编译完成后仅生成了/js/app.js和css/app.css两个文件,没有general.css的编译记录,说明你没有将general.css加入Laravel Mix的编译配置中,因此编译后public/css目录下不存在general.css文件,之前的四种引入方式自然全部失效。
另外你尝试的直接指向resources/css路径的写法本身也是无效的:resources目录属于Laravel的后端代码目录,不会被web服务器对外开放访问,就算文件存在也无法通过HTTP请求直接获取。
解决方法
你可以根据自己的需求选择以下任意一种方案解决:
- 方案1:将general.css导入到app.css中
打开resources/css/app.css,在顶部加入导入代码:
@import './general.css';
重新执行npm run dev编译后,所有general.css的样式都会被打包进public/css/app.css中,你只需要保留原本的{{ asset('css/app.css') }}引入即可,不需要额外引入general.css。
- 方案2:在webpack.mix.js中单独配置编译general.css
打开项目根目录下的webpack.mix.js,在原有配置外新增对general.css的编译规则:
// 原有默认配置保留 mix.js('resources/js/app.js', 'public/js') .postCss('resources/css/app.css', 'public/css', [ // 你的原有postCss插件配置 ]); // 新增general.css编译配置 mix.postCss('resources/css/general.css', 'public/css');
保存后重新执行npm run dev,编译完成后public/css目录下会生成general.css,使用{{ asset('css/general.css') }}即可正常引入。
- 方案3:直接作为静态资源放置
如果你不需要对general.css做任何预处理,不需要经过前端编译流程处理,可以直接把general.css文件移动到public/css目录下,无需执行编译命令,直接用{{ asset('css/general.css') }}就能正常引入。
内容的提问来源于stack exchange,提问作者O'Niel
相关产品推荐
相关产品推荐

