sass - 通过相对路径包含图像的正确方法

标签 sass laravel-mix node-sass resolve-url-loader

我已经更新 laravel-mix 到版本 4.0.12并在 *.scss 中面临在线构建损坏我使用相对路径来包含背景图像

我得到了下一个文件结构

resources/
|-assets/
||-img/
|||-background.png
||-sass/
|||-footer.scss

我在 中的代码页脚.scss 是下一个
.footer {
  background-image: url(../img/background.png)
}

我的 webpack.mix.js 是下一个
const mix = require('laravel-mix');

const resourcesAssets = 'resources/assets/';
const dest = 'public/assets/';

mix
  .copy(`${resourcesAssets}images`, `${dest}images`, false)
  .sass(`${resourcesAssets}scss/footer.scss`, `${dest}css`);

正在编译中npm run prod我有
Module build failed (from ./node_modules/css-loader/index.js):
ModuleBuildError: Module build failed (from ./node_modules/resolve-url-loader/index.js):
Error: resolve-url-loader: CSS error
predicate must return an absolute path or the result of calling next()
at file://C:\xampp\htdocs\laravel-project\resources\assets\sass\footer.scss:2:3
at encodeError (C:\xampp\htdocs\laravel-project\node_modules\resolve-url-loader\index.js:218:12)
at onFailure (C:\xampp\htdocs\laravel-project\node_modules\resolve-url-loader\index.js:175:14)
at <anonymous>
    at runMicrotasksCallback (internal/process/next_tick.js:122:5)
    at _combinedTickCallback (internal/process/next_tick.js:132:7)
    at process._tickCallback (internal/process/next_tick.js:181:9)
    at runLoaders (C:\xampp\htdocs\laravel-project\node_modules\webpack\lib\NormalModule.js:301:20)
    at C:\xampp\htdocs\laravel-project\node_modules\loader-runner\lib\LoaderRunner.js:364:11
    at C:\xampp\htdocs\laravel-project\node_modules\loader-runner\lib\LoaderRunner.js:230:18
    at context.callback (C:\xampp\htdocs\laravel-project\node_modules\loader-runner\lib\LoaderRunner.js:111:13)
    at onFailure (C:\xampp\htdocs\laravel-project\node_modules\resolve-url-loader\index.js:175:5)
    at <anonymous>
        at runMicrotasksCallback (internal/process/next_tick.js:122:5)
        at _combinedTickCallback (internal/process/next_tick.js:132:7)
        at process._tickCallback (internal/process/next_tick.js:181:9)

        error  in ./resources/assets/sass/footer.scss

我该如何解决这个问题?

最佳答案

问题出在太新 "resolve-url-loader": "^3.0.0" .

安装中间版本后"laravel-mix": "~3"前段时间添加到 package.json .

删除它并重新运行构建有助于我解决问题。添加了 laravel-mix "resolve-url-loader": "2.3.1"运行后 npm run prod .

关于sass - 通过相对路径包含图像的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53889663/

相关文章:

css - sass load mixin 有条件地基于媒体查询

laravel - 如何在 Laravel MIX 上创建 svg Sprite ?

sass - JetBrains WebStorm/PhpStorm 包含 SASS/SCSS 的路径

reactjs - node-sass@4.11.0 安装后脚本失败。无法运行这个

css - 使用 laravel mix 缩小 css 文件是如何工作的?

javascript - Gulp sass 悄无声息地失败了

ios - Ionic2页脚工具栏文本在IOS上不占全宽

css - @import bootstrap.css 和@extend bootstrap 类选择器如何?

javascript - 如何使用 Laravel Mix 将 lodash debounce 添加到我的项目中