2017-03-07 5 views
1

-Systemoutput.filename erforderlich

macOS Sierra, Knoten v5.6.0, webpack v 2.2.1 - Wurde in Webpack 1.8.0

Arbeit

Konvertieren von JS Feinwerk TS

Aktuelle Verhalten

Dies ist die Fehlermeldung

Error: 'output.filename' is required, either in config file or as --output-filename 
at processOptions (/Users/sagardubey/workspace/ts-sdk/node_modules/webpack/bin/convert-argv.js:488:11) 
at processConfiguredOptions (/Users/sagardubey/workspace/ts-sdk/node_modules/webpack/bin/convert-argv.js:141:4) 
at module.exports (/Users/sagardubey/workspace/ts-sdk/node_modules/webpack/bin/convert-argv.js:117:10) 
at Object. (/Users/sagardubey/workspace/ts-sdk/node_modules/webpack/bin/webpack.js:153:40) 
at Module._compile (module.js:413:34) 
at Object.Module._extensions..js (module.js:422:10) 
at Module.load (module.js:357:32) 
at Function.Module._load (module.js:314:12) 
at Function.Module.runMain (module.js:447:10) 
at startup (node.js:140:18) 

Dies ist meine Konfigurationsdatei. Es gibt keinen Tippfehler in Dateinamen oder dorthin, wo ich

var webpack = require("webpack"); 
var path = require('path') 
module.exports = { 
    devServer: { 
    }, 
    devtool: 'source-map', 
    entry: { 
    "ym.min": "./src/bootstrap.ts", 
    }, 
    module: { 
    rules: [ 
     { 
     test: /\.ts$/, 
     use: [ 
      { 
      loader: "ts-loader" 
      }, 
      { 
      loader: "tslint-loader", 
      enforce: "pre" 
      } 
     ] 
     } 
    ], 
    output: { 
     filename: '[name].js', 
     path: './dist' 
    }, 
    plugins: [], 
    resolve: { 
     modules: [ 
     "node_modules", 
     path.join(__dirname, 'node_modules') 
     ], 
     extensions: [".webpack.js", ".web.js", ".ts", ".js", "*"], 
     enforceExtension: false, 
     alias: { 
     'handlebars': 'handlebars/runtime.js' 
     } 
    } 
    } 
} 

sehen Wenn Sie versuchen, uglifyJS zu verwenden wie so - es heißt „Typeerror: nicht Eigentum lesen‚unshift‘undefinierter“

var config = require('./webpack.config'); 
    var webpack = require('webpack'); 

    config.plugins.unshift(new webpack.optimize.UglifyJsPlugin({ 
     compress: { 
     warnings: false 
     }, 
     output: { 
     comments: false, 
     }, 
    })); 

    module.exports = config; 

Antwort

2

Sie didn 't definieren output.filename aber module.output.filename, die nicht existiert. Das gleiche gilt für plugins und resolve sie sollten nicht unter module aber auf der obersten Ebene sein. Sie müssen die geschweifte Klammer für module nach dem Array rules schließen.

Ein anderes Problem ist, dass Sie versuchen, enforce: "pre" auf einen Loader zu setzen, aber das soll auf eine Regel gehen. Sie müssen also zwei Regeln für .ts haben, eine Regel, die enforce: "pre" für die tslint-loader und die andere nur mit der ts-loader hat.

Ihre Konfiguration sollte wie folgt sein:

var webpack = require("webpack"); 
var path = require('path') 
module.exports = { 
    devServer: { 
    }, 
    devtool: 'source-map', 
    entry: { 
    "ym.min": "./src/bootstrap.ts", 
    }, 
    module: { 
    rules: [ 
     { 
     test: /\.ts$/, 
     enforce: "pre", 
     use: [ 
      { 
      loader: "tslint-loader" 
      } 
     ] 
     }, 
     { 
     test: /\.ts$/, 
     use: [ 
      { 
      loader: "ts-loader" 
      } 
     ] 
     } 
    ] 
    }, // End of module 
    output: { 
    filename: '[name].js', 
    path: './dist' 
    }, 
    plugins: [], 
    resolve: { 
    modules: [ 
     "node_modules", 
     path.join(__dirname, 'node_modules') 
    ], 
    extensions: [".webpack.js", ".web.js", ".ts", ".js", "*"], 
    enforceExtension: false, 
    alias: { 
     'handlebars': 'handlebars/runtime.js' 
    } 
    } 
} 
+0

Dank @ Michael. Trotzdem habe ich immer noch Probleme. Wenn ich - /node_modules/webpack/bin/webpack.js --config webpack.config.js ich folgendes erhalten - Ungültige Konfigurationsobjekt. Webpack wurde mit einem Konfigurationsobjekt initialisiert, das nicht mit dem API-Schema übereinstimmt. - configuration.module.rules [0] .use sollte einer von diesen sein: nicht leere Zeichenfolge | Funktion | Objekt {Loader ?, Optionen ?, Abfrage? } | Funktion – sagard

+0

Das Problem war "erzwingen" ist nicht auf Lader, aber auf Regeln erforderlich. Ich habe die Antwort aktualisiert, um das zu beheben. –

+0

Ooh das war überhaupt nicht klar von [hier] (https://webpack.js.org/guides/migrating/#module-preladers-and-module-postloaders-was-removed) - vielen Dank @michael! – sagard

0

Ich habe diesen Fehler, wenn ich aus Versehen zwei Instanzen von module.exports in der webpack.config.js Datei, Entfernen zusätzliche module.exports hatte Objekt befestigt die Ausgabe

auch kommt dieses Problem, wenn Sie richtig (module.exports) falsch schreiben zu Unrecht (module.export)