Ich versuche, gulp zu verwenden, um einen Ordner mit JS-Dateien zu minimieren. Eine der Dateien hat jedoch den oben genannten Fehler und verhindert, dass sie minimiert werden.
Es ist mir gelungen, den Fehler, den ich hier teilweise gedruckt habe, zu fangen und auszudrucken:
JS_Parse_Error {
message: 'SyntaxError: Unexpected token: punc ())',
filename: 'ex.js',
line: 189,
col: 25,
pos: 6482,
stack: Error\n at new JS_Parse_Error (eval at <anonymous> ... )
plugin: 'gulp-uglify',
fileName: '.../js/ex.js',
showStack: false
}
Die betreffende Datei enthält Folgendes, gekürzt:
function() {
...
$.confirm({
buttons: {
confirm: function() {
$.post('/ajax-handler', {
...
})
.done( function(response) {
var data = filterResponse(response);
if (data['status'] == 'success') {
sleep(1000).then(() => {
* ...
});
sleep(5000).then(() => {
...
});
} else {
console.log('Oops!');
}
})
.fail( function(err, status, response) {
...
});
},
cancel: function() {}
}
});
...
}
Ich habe das "*" oben hinzugefügt, um die genaue Position anzugeben, die von JS_Parse_Error aufgelistet wird.
v2.0.0 (2018-09-14) - BRECHENDE ÄNDERUNGEN (Verbindung)
Wechseln Sie wieder nach uglify-js (uglify-es wird aufgegeben. Wenn Sie ES6-Code benötigen, verwenden Sie terser-webpack-plugin ).
Ich hoffe, Sie können sich von dieser mit Webpack funktionierenden Lösung inspirieren lassen. (Link unten)
Es gibt zwei Versionen von UglifyJS - ES5 und ES6 (Harmony). siehe git
Die ES5-Version wird standardmäßig mit allen Plugins mitgeliefert. Wenn Sie jedoch explizit eine Harmony-Version installieren, verwenden diese Plugins diese stattdessen.
package.json
"uglify-js": "git+https://github.com/mishoo/UglifyJS2.git#harmony"
oder
npm install --save [email protected]:mishoo/UglifyJS2#harmony
yarn add git://github.com/mishoo/UglifyJS2#harmony --dev
Zur Verwendung mit Webpack installieren Sie auch das Webpack-Plugin
npm install uglifyjs-webpack-plugin --save-dev
yarn add uglifyjs-webpack-plugin --dev
importieren Sie dann das manuell installierte Plugin
var UglifyJSPlugin = require('uglifyjs-webpack-plugin');
und ersetzen Sie es im Code
- new webpack.optimize.UglifyJsPlugin({ ... })
+ new UglifyJSPlugin({ ... })
Weitere Webpack-Informationen (Installation/Verwendung) finden Sie unter https://github.com/webpack-contrib/uglifyjs-webpack-plugin#install
npm install uglifyjs-webpack-plugin --save-dev
reicht nicht aus
Das Hauptproblem ist "uglifyjs-webpack-plugin": "^0.4.6"
in webpacks package.json
Gemäß semver , ^0.4.6 := >=0.4.6 <0.5.0
. Aufgrund der führenden Null verwendet webpack
niemals den 1.0.0-beta.2
.
Nachdem Sie npm i -D [email protected]
ausgeführt haben, müssen Sie einen weiteren Schritt ausführen, nämlich rm -rf node_modules/webpack/node_modules/uglifyjs-webpack-plugin
. Dann holt webpack die Version von node_modules/uglifyjs-webpack-plugin
anstelle von node_modules/webpack/node_modules/uglifyjs-webpack-plugin
ab.
Update am 18.08.2014: Webpack v4 hat dieses Problem nicht
Fügen Sie die babel-preset-es2015
-Abhängigkeit hinzu, um dies zu beheben.
Fügen Sie auch 'es2015'
in der .babelrc
-Datei hinzu.
json
{
"presets": ["es2015"]
}
Ich habe das gleiche Problem, ich habe eine großartige Antwort gefunden hier , die mir half, die Datei zu finden, die den Fehler verursacht hat.
Gehen Sie zu Rails Console und fügen Sie ein:
JS_PATH = "app/assets/javascripts/**/*.js";
Dir[JS_PATH].each do |file_name|
puts "\n#{file_name}"
puts Uglifier.compile(File.read(file_name))
end
Hoffe es hilft jemandem!
Für mich hatte es nichts damit zu tun, dass Uglify nicht richtig funktionierte, sondern eher eine Abhängigkeit (in diesem Fall ein leeres Versprechen), die noch nicht auf ES5 kompiliert wurde. Da wir die Roh-Quelldatei gerade importiert haben, Babel jedoch nur Dateien außerhalb von node_modules transpiliert, wird uglify durch die ES6-Syntax verwirrt.
Prüfen Sie einfach, ob eine kürzlich hinzugefügte Abhängigkeit keinen "dist" -Aufbau enthält.
Wenn Sie diesen Fehler bei der Verwendung von Grunt (grunt-contrib-uglify) erhalten, können Sie die ES6-Version des Plugins installieren:
npm install grunt-contrib-uglify-es --save-dev
Fügen Sie Stufe 3 den Voreinstellungen in der .babelrc-Datei hinzu.
{
"presets": [
"stage-3"
]
}
Ich hatte das gleiche Problem mit dir. Ich habe gulp.js benutzt. Ich habe dieses Problem dank js files ES Format behoben. Zum Beispiel, bevor mein Code gelöst ist:
for (district for response) {
$('#districts').append('<option value="' + district.id + '">' + district.name + '</option>');
$('#districts').removeAttr('disabled');
}
nach Fixcode:
for (district in response) {
$('#districts').append('<option value="' + district.id + '">' + district.name + '</option>');
$('#districts').removeAttr('disabled');
}
Zusammenfassend ist das Problem auf Ecma-uglify.js zurückzuführen.