Javascript 来自UglifyJs的错误:语法错误:意外标记:运算符(>;)
我在尝试运行用于生产的网页包时出错Javascript 来自UglifyJs的错误:语法错误:意外标记:运算符(>;),javascript,webpack,uglifyjs,Javascript,Webpack,Uglifyjs,我在尝试运行用于生产的网页包时出错 ERROR in js/main.21dbce548a76ffc14cfb.js from UglifyJs SyntaxError: Unexpected token: operator (>) [./~/tmi.js/lib/utils.js:3,0][js/main.21dbce548a76ffc14cfb.js:3529,20] utils.js:3,0(与我的缩小版js相同)是: 所以我假设抛出错误是因为它正在读取ES6,但它不理解ES6?(
ERROR in js/main.21dbce548a76ffc14cfb.js from UglifyJs
SyntaxError: Unexpected token: operator (>) [./~/tmi.js/lib/utils.js:3,0][js/main.21dbce548a76ffc14cfb.js:3529,20]
utils.js:3,0(与我的缩小版js相同)是:
所以我假设抛出错误是因为它正在读取ES6,但它不理解ES6?(箭头功能)
我看不出这里出了什么问题,这是我的webpack.config.js
// changed some loader syntax after reading
// https://webpack.js.org/how-to/upgrade-from-webpack-1/
const path = require(`path`);
const webpack = require(`webpack`);
const {UglifyJsPlugin} = webpack.optimize;
const CopyWebpackPlugin = require(`copy-webpack-plugin`);
const ExtractTextWebpackPlugin = require(`extract-text-webpack-plugin`);
const configHtmls = require(`webpack-config-htmls`)();
const extractCSS = new ExtractTextWebpackPlugin(`css/style.css`);
// change for production build on different server path
const publicPath = `/`;
// hard copy assets folder for:
// - srcset images (not loaded through html-loader )
// - json files (through fetch)
// - fonts via WebFontLoader
const copy = new CopyWebpackPlugin([{
from: `./src/assets`,
to: `assets`
}], {
ignore: [ `.DS_Store` ]
});
const config = {
entry: [
`./src/css/style.css`,
`./src/js/script.js`
],
resolve: {
// import files without extension import ... from './Test'
extensions: [`.js`, `.jsx`, `.css`]
},
output: {
path: path.join(__dirname, `server`, `public`),
filename: `js/[name].[hash].js`,
publicPath
},
devtool: `sourcemap`,
module: {
rules: [
{
test: /\.css$/,
loader: extractCSS.extract([
{
loader: `css`,
options: {
importLoaders: 1
}
},
{
loader: `postcss`
}
])
},
{
test: /\.html$/,
loader: `html`,
options: {
attrs: [
`audio:src`,
`img:src`,
`video:src`,
`source:srcset`
] // read src from video, img & audio tag
}
},
{
test: /\.(jsx?)$/,
exclude: /node_modules/,
use: [
{
loader: `babel`
},
{
loader: `eslint`,
options: {
fix: true
}
}
]
},
{
test: /\.(svg|png|jpe?g|gif|webp)$/,
loader: `url`,
options: {
limit: 1000, // inline if < 1 kb
context: `./src`,
name: `[path][name].[ext]`
}
},
{
test: /\.(mp3|mp4)$/,
loader: `file`,
options: {
context: `./src`,
name: `[path][name].[ext]`
}
}
]
},
plugins: [
extractCSS,
copy
]
};
if(process.env.NODE_ENV === `production`){
//image optimizing
config.module.rules.push({
test: /\.(svg|png|jpe?g|gif)$/,
loader: `image-webpack`,
enforce: `pre`
});
config.plugins = [
...config.plugins,
new UglifyJsPlugin({
sourceMap: true, // false returns errors.. -p + plugin conflict
comments: false
})
];
}
config.plugins = [...config.plugins, ...configHtmls.plugins];
module.exports = config;
//读取后更改了一些加载程序语法
// https://webpack.js.org/how-to/upgrade-from-webpack-1/
const path=require(`path`);
const webpack=require(`webpack`);
const{UglifyJsPlugin}=webpack.optimize;
const CopyWebpackPlugin=require(`copy webpack plugin`);
const ExtractTextWebpackPlugin=require(`extract text webpack plugin`);
const configHtmls=require(`webpack config htmls`));
const extractCSS=新的extractTextWebPackagePlugin(`css/style.css`);
//更改不同服务器路径上的生产构建
常量publicPath=`/`;
//硬拷贝资产文件夹,用于:
//-srcset图像(未通过html加载程序加载)
//-json文件(通过获取)
//-通过WebFontLoader使用字体
const copy=new CopyWebpackPlugin([{
发件人:`./src/assets`,
致:`资产`
}], {
忽略:[`.DS\u存储区`]
});
常量配置={
条目:[
`./src/css/style.css`,
`./src/js/script.js`
],
决心:{
//导入不带扩展名的文件导入…从“./Test”
扩展名:[`.js`、`.jsx`、`.css`]
},
输出:{
path:path.join(uu dirname,`server`,`public`),
文件名:`js/[name].[hash].js`,
公共道路
},
devtool:`sourcemap`,
模块:{
规则:[
{
测试:/\.css$/,,
加载程序:extractCSS.extract([
{
加载器:`css`,
选项:{
进口装载机:1
}
},
{
加载器:`postsss`
}
])
},
{
测试:/\.html$/,,
加载器:`html`,
选项:{
属性:[
`音频:src`,
`img:src`,
`视频:src`,
`资料来源:srcset`
]//从视频、img和音频标签读取src
}
},
{
测试:/\(jsx?)$/,
排除:/node_模块/,
使用:[
{
加载器:“巴贝尔`
},
{
加载器:`eslint`,
选项:{
修正:真的
}
}
]
},
{
测试:/\(svg | png | jpe?g | gif | webp)$/,
加载器:`url`,
选项:{
限制:1000,//如果小于1 kb,则为内联
上下文:`./src`,
名称:`[path][name].[ext]`
}
},
{
测试:/\(mp3 | mp4)$/,
加载器:`file`,
选项:{
上下文:`./src`,
名称:`[path][name].[ext]`
}
}
]
},
插件:[
提取CSS,
复制
]
};
if(process.env.NODE_env===`production`){
//图像优化
config.module.rules.push({
测试:/\(svg | png | jpe?g | gif)$/,
加载器:`image webpack`,
强制执行:`预`
});
config.plugins=[
…config.plugins,
新的UglifyJsPlugin({
sourceMap:true,//false返回错误..-p+插件冲突
评论:错
})
];
}
config.plugins=[…config.plugins,…configHtmls.plugins];
module.exports=config;
UglifyJs2有一个Harmony分支,它接受要缩小的ES6语法。此时,您需要创建一个webpack分支,并将webpack指向该分支
我最近回答了几个类似的问题。请查看或获取详细说明。UglifyJs2有一个Harmony分支,它接受缩小的ES6语法。此时,您需要创建一个webpack分支,并将webpack指向该分支
我最近回答了几个类似的问题。请查看或获取详细说明。OP的错误来自UglifyJs,正如公认的答案所解决的,本页的一些人可能会从babel获得错误,在这种情况下,请使用以下方法进行修复:
“预设”:[“es2015”]
添加到babel loader的选项中。预设
部分,或者对于.babelrc
OP的错误来自UglifyJs,正如公认的答案中所解决的,此页面的一些人可能从babel获得错误,在这种情况下,请使用以下方法进行修复:将“预设”:[“es2015”]
添加到babel loader的选项中。预设
部分,或者到.babelrc
在我的例子中,我使用的是WebpackVersion1.14
我得到了他的帮助
步骤:
纱线添加uglifyes网页包插件
(并删除纱线删除uglifyjs网页包插件
)纱线添加uglify-js-es6
新建webpack.optimize.UglifyJsPlugin
更改为
新的UglifyJsPlugin
然后我就可以建造了。谢谢就我而言,我使用的是webpack 1.14版 我得到了他的帮助 步骤:
纱线添加uglifyes网页包插件
(并删除纱线删除uglifyjs网页包插件
)纱线添加uglify-js-es6
新建webpack.optimize.UglifyJsPlugin
更改为
新的UglifyJsPlugin
然后我就可以建造了。谢谢您没有在
babel
部分用query
指定预设
s,所以您有.babelrc
和“预设”:[“es2015”]
在其中吗?@clk回复发布:3接受回答:3您没有在babel
部分用查询
指定预设
s,那么您是否有.babelrc
中包含预设“:[“es2015”]
?@clk回复发布:3接受回答:3
// changed some loader syntax after reading
// https://webpack.js.org/how-to/upgrade-from-webpack-1/
const path = require(`path`);
const webpack = require(`webpack`);
const {UglifyJsPlugin} = webpack.optimize;
const CopyWebpackPlugin = require(`copy-webpack-plugin`);
const ExtractTextWebpackPlugin = require(`extract-text-webpack-plugin`);
const configHtmls = require(`webpack-config-htmls`)();
const extractCSS = new ExtractTextWebpackPlugin(`css/style.css`);
// change for production build on different server path
const publicPath = `/`;
// hard copy assets folder for:
// - srcset images (not loaded through html-loader )
// - json files (through fetch)
// - fonts via WebFontLoader
const copy = new CopyWebpackPlugin([{
from: `./src/assets`,
to: `assets`
}], {
ignore: [ `.DS_Store` ]
});
const config = {
entry: [
`./src/css/style.css`,
`./src/js/script.js`
],
resolve: {
// import files without extension import ... from './Test'
extensions: [`.js`, `.jsx`, `.css`]
},
output: {
path: path.join(__dirname, `server`, `public`),
filename: `js/[name].[hash].js`,
publicPath
},
devtool: `sourcemap`,
module: {
rules: [
{
test: /\.css$/,
loader: extractCSS.extract([
{
loader: `css`,
options: {
importLoaders: 1
}
},
{
loader: `postcss`
}
])
},
{
test: /\.html$/,
loader: `html`,
options: {
attrs: [
`audio:src`,
`img:src`,
`video:src`,
`source:srcset`
] // read src from video, img & audio tag
}
},
{
test: /\.(jsx?)$/,
exclude: /node_modules/,
use: [
{
loader: `babel`
},
{
loader: `eslint`,
options: {
fix: true
}
}
]
},
{
test: /\.(svg|png|jpe?g|gif|webp)$/,
loader: `url`,
options: {
limit: 1000, // inline if < 1 kb
context: `./src`,
name: `[path][name].[ext]`
}
},
{
test: /\.(mp3|mp4)$/,
loader: `file`,
options: {
context: `./src`,
name: `[path][name].[ext]`
}
}
]
},
plugins: [
extractCSS,
copy
]
};
if(process.env.NODE_ENV === `production`){
//image optimizing
config.module.rules.push({
test: /\.(svg|png|jpe?g|gif)$/,
loader: `image-webpack`,
enforce: `pre`
});
config.plugins = [
...config.plugins,
new UglifyJsPlugin({
sourceMap: true, // false returns errors.. -p + plugin conflict
comments: false
})
];
}
config.plugins = [...config.plugins, ...configHtmls.plugins];
module.exports = config;