Dva: Pfadproblem mit Bildern, auf die in weniger verwiesen wird

Erstellt am 20. Okt. 2016  ·  11Kommentare  ·  Quelle: dvajs/dva

faq question

Hilfreichster Kommentar

Versucht gibt es zwei Lösungen:

  1. Verwenden Sie nicht .less , sondern .css
  2. Fügen Sie der URL das Präfix ~ hinzu, z. B. background: ~"url(./bg.png)" no-repeat

Alle 11 Kommentare

Sowohl Import als auch Anforderung sind in Ordnung.

@bjwulin Wie importiere oder benötige .less ?

Ich habe versucht, das Hintergrundbild unter der Datei .less einzuführen.

.list {
  width: 100%;
  margin-bottom: .6rem;
  background: url('./bg.png') center no-repeat;
}

Wenn ich npm start ausführe, meldet die Konsole einen Fehler:

ERROR in ./~/css-loader?sourceMap&modules&localIdentName=[local]___[hash:base64:5]!./~/postcss-loader!./~/less-loader?{"sourceMap":true,"modifyVars":{}}!./src/routes/LoginPage.less
    Module not found: Error: Cannot resolve module 'bg.png' in /Users/mcbird/workspace/cedar-mobile/src/routes
     @ ./~/css-loader?sourceMap&modules&localIdentName=[local]___[hash:base64:5]!./~/postcss-loader!./~/less-loader?{"sourceMap":true,"modifyVars":{}}!./src/routes/LoginPage.less 6:304-321

Die Dokumentstruktur ist wie folgt:
image

Meine webpack.config.js -Datei lautet wie folgt:

const fs = require('fs');
const path = require('path');

module.exports = function(webpackConfig, env) {
  webpackConfig.babel.plugins.push('transform-runtime');

  // Support hmr
  if (env === 'development') {
    webpackConfig.devtool = '#inline-source-map';
    webpackConfig.babel.plugins.push(['dva-hmr', {
      entries: [
        './src/index.js',
      ],
    }]);
  } else {
    webpackConfig.babel.plugins.push('dev-expression');
  }

  // 引入 antd
  webpackConfig.babel.plugins.push(['import', {
    libraryName: 'antd-mobile',
    style: 'css',
  }]);

  // Support CSS Modules
  // Parse all less files as css module.
  webpackConfig.module.loaders.forEach(function(loader, index) {
    if (typeof loader.test === 'function' && loader.test.toString().indexOf('\\.less$') > -1) {
      loader.include = /node_modules/;
      loader.test = /\.less$/;
    }
    if (loader.test.toString() === '/\\.module\\.less$/') {
      loader.exclude = /node_modules/;
      loader.test = /\.less$/;
    }
    if (typeof loader.test === 'function' && loader.test.toString().indexOf('\\.css$') > -1) {
      loader.include = /node_modules/;
      loader.test = /\.css$/;
    }
    if (loader.test.toString() === '/\\.module\\.css$/') {
      loader.exclude = /node_modules/;
      loader.test = /\.css$/;
    }
  });

  return webpackConfig;
};

Ich fand, dass es in Ordnung ist, das Bild separat unter src/assets/
image
Zu diesem Zeitpunkt schreibt die Bild-URL in LoginPage.less den relativen Pfad direkt

.list {
  width: 100%;
  margin-bottom: .6rem;
  background: url("../assets/bg.png");
}

https://github.com/dvajs/dva/issues/96#issuecomment -247935310
Es scheint das gleiche Problem wie dieses.

Nach verschiedenen Debugging-Vorgängen wird festgestellt, dass der Image-Pfad in der Datei *.less aus dem Stammverzeichnis gefunden werden muss. Das Bild unten:
image
Schreiben Sie nach unseren üblichen Gewohnheiten im Allgemeinen nur background: url("./bg.png"); direkt, aber hier müssen Sie zum Stammverzeichnis zurückkehren und dann nach unten schauen.

Versucht gibt es zwei Lösungen:

  1. Verwenden Sie nicht .less , sondern .css
  2. Fügen Sie der URL das Präfix ~ hinzu, z. B. background: ~"url(./bg.png)" no-repeat

Sie können die Zeichenfolgeninterpolation verwenden, um Folgendes einzuführen:
1. @imgUrl : "../ star.jpg"; Schreiben Sie den Pfad des Bildes aus dem Stammverzeichnis. Wenn es sich um ein Bild und eine Datei mit weniger Dateien handelt, befindet sich die CSS-Datei in einem Verzeichnis direkt @ I'mUrl: " star.jpg ";
2.background: url ("@ {imgUrl}"); Verwenden Sie die String-Interpolationsmethode, um statische Bilder einzuführen. Sie können auch ~ "" verwenden. Der Hintergrund in Anführungszeichen soll die Kompilierung vermeiden: ~ "url (' ../star .jpg ') ";

Es ist wirklich schwer zu bedienen

background: ~"url('../star.jpg')" Dieser Weg kann in meinem Projekt verwendet werden, andere nicht

Hintergrund: ~ "url ('../ star.jpg')" verfügbar

Fügen Sie der URL das Präfix ~ hinzu, z. B. den Hintergrund: ~ "url (./ bg.png)" Dies ist verfügbar

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen