Неожиданный токен: оператор (>) от UglifyJs
у меня есть 2 проекта vue-Cli webpack (ClientApp и Lib). Lib-это библиотека компонентов (совместно с другими проектами)
когда я создаю свой проект ClientApp npm run build
, у меня есть следующие ошибки:
ERROR in static/js/app.d08a24ce0e8d0438ce68.js from UglifyJs
Unexpected token: operator (>) [C:/.../Lib/src/tools/escape-key.js:3,0][static/js/app.d08a24ce0e8d0438ce68.js:17468,38]
вопросы
похоже, что ошибка происходит из функции стрелки в файле escape-key.js
.
Это синтаксис ES6, и UglifyJS не может разобрать это.
Разве Вавилон не должен быть первым, перед уродством?
Обратите внимание, что это хорошо работает с *.vue
файлы.
структура проекта
ClientApp
| - build
| - config
| - src
| - App.Vue // import EscapeKey from '~lib/tools/escape-key';
Lib
| -src
| - tools
| - escape-key.js
ClientApp по webpack.основа.conf.файл JS
Примечание есть псевдоним Либ.
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'@': resolve('src'),
'~lib': path.join(__dirname, '../../lib/src'),
}
},
пожалуйста чувствуйте свободным спросить больше деталей если требуется.
4 ответов
добавить
"uglifyjs-webpack-plugin": "v1.0.0-beta.1",
к вашим зависимостям dev и обновите свой webpack.config.js
файл для использования этой версии явно:
const UglifyJSPlugin = require('uglifyjs-webpack-plugin')
module.exports = {
plugins: [
new UglifyJSPlugin()
]
}
uglifyjs-webpack-плагин последней стабильной версии (v0.4.6) использует более старую версию uglify-js
вместо uglify-es
это способно транспилировать ES6. Эта зависимость была обновлена в 1.0.0 бета.Выпуск 1.
https://github.com/webpack-contrib/uglifyjs-webpack-plugin/releases/tag/v1.0.0-beta.1
это решило проблему для меня.
Я установил uglifyjs-webpack-plugin
npm install uglifyjs-webpack-plugin --save-dev
затем добавил Это к моему webpack.config
const UglifyJSPlugin = require('uglifyjs-webpack-plugin')
module.exports = {
plugins: [
new UglifyJSPlugin()
]
}
версия uglify, которую вы используете, вероятно, не поддерживает ES6.
https://github.com/mishoo/UglifyJS2/tree/harmony это версии ES6, как сейчас
Если вы хотите использовать webpack плагин, обязательно обратите внимание на раздел установки, касающийся es6
важно! плагин имеет одноранговую зависимость от uglify-js, поэтому для того, чтобы использовать плагин, также uglify-js должен быть установленный. Этот в настоящее время (2017/1/25) доступны пакеты npm uglify-js; однако не поддерживает минификацию кода ES6. Для того, чтобы поддержать на ES6, является ES6-capable, a.к. a. гармония, версия UglifyJS должна быть предоставлена.
Если ваша цель minification ES6:
yarn add git://github.com/mishoo/UglifyJS2#harmony-v2.8.22 --dev
после изменения конфигурации babel-loader это сработало.
конфигурация Babel-loader
{
test: /\.js$/,
loader: 'babel-loader',
include: [path.join(__dirname, '../../Lib/src'), resolve('src'), resolve('test')]
}