Ich habe ein Projekt, das Typescript 2.4.1 verwendet, Webpack 2.6.1, und ich habe Probleme, relative Pfade zum Laden meiner Bilder richtig zu bekommen.Webpack-Datei-Loader lädt keine Dateien mit komplexen Pfaden
Wenn ich ein Bild in dem gleichen Ordner wie meine .ts
Datei setzen, die es lädt, ich kann es die Arbeit an:
const background = require("./background.png");
console.log(background);
So funktioniert das:
src
Book.ts
background.png
Aber ich kann‘ Finde heraus, wie man Dateilader das Bild mit dieser Struktur findet:
src
Book.ts
assets
background.png
Ich habe versucht, dieeinstellenin den Datei-Loader-Optionen wie beschrieben here, aber ich konnte nicht die Datei auf diese Weise laden, egal, welche Kombinationen von absoluten und relativen Pfade habe ich versucht.
Hier ist meine Datei webpack.config.js. (Ich entfernte einige Teile, weil es lange dauert.)
module.exports = {
entry: {
app: [
path.resolve(__dirname, './src/main.ts')
],
vendor: ['pixi', 'p2', 'phaser', 'webfontloader']
},
output: {
pathinfo: true,
path: path.resolve(__dirname, 'dist'),
publicPath: './dist/',
filename: 'bundle.js'
},
module: {
rules: [
{test: /\.ts$/, enforce: 'pre', loader: 'tslint-loader', options: {emitErrors: true, failOnHint: true}},
{test: /\.ts$/, loader: 'ts-loader'},
{test: /pixi\.js/, use: ['expose-loader?PIXI']},
{test: /phaser-split\.js$/, use: ['expose-loader?Phaser']},
{test: /p2\.js/, use: ['expose-loader?p2']},
{test: /\.(png|svg|jpg|gif|mp3|wav|mp4)$/, use: [{
loader: 'file-loader',
options: {
outputPath: 'assets/'
}
}]},
{enforce: "pre", test: /\.js$/, loader: "source-map-loader"}
]
},
node: {
fs: 'empty',
net: 'empty',
tls: 'empty'
}
}
Und hier ist meine Typoskript Erklärung bedürfen:
declare let require: {
<T>(path: string): T;
(paths: string[], callback: (...modules: any[]) => void): void;
ensure: (paths: string[], callback: (require: <T>(path: string) => T) => void) => void;
};
(Ich habe versucht, nett ES6 Importe immer arbeiten, aber das ging nicht gut.)
Nun, ich habe es mit url-loader arbeiten lassen, bin dann zurückgegangen und habe File-Loader ausprobiert und es hat funktioniert ... weil ich ein Idiot bin und nie den richtigen relativen Pfad benutzt habe. Der lustige Teil? In meiner Frage schrieb ich, dass meine Dateien in dem relativen Pfad waren, den ich verwenden wollte, nicht in der Struktur, in der sie tatsächlich waren. – CorayThan
: D Nun, Fehler passieren gut, dass du es herausgefunden hast – Flocke