-
Notifications
You must be signed in to change notification settings - Fork 917
Closed
Description
Version
2.5.11Reproduction link
https://github.com/volokolamskspb/KKRSteps to reproduce
run `npm run build` Open Internet ExpolrerWhat is expected?
The app shouldn't throw errorsWhat is actually happening?
App is throwing an error and js stops working.Detailled description
Vue loader compiles build.js with reserved property names. method.default
This code doesn't work in IE11.
package.json
{
"name": "vue-ssr",
"description": "A Vue.js project",
"version": "1.0.0",
"author": "",
"license": "MIT",
"private": true,
"scripts": {
"start": "npm run build && npm run start-server",
"build": "npm run build-client && npm run build-server",
"build-client": "cross-env NODE_ENV=production webpack --progress --hide-modules",
"build-server": "cross-env NODE_ENV=production webpack --config webpack.server.config.js --progress --hide-modules",
"start-server": "node server.js"
},
"dependencies": {
"babel-plugin-array-includes": "^2.0.3",
"es6-promise": "^4.2.5",
"express": "^4.16.4",
"express-favicon": "^2.0.1",
"promise-polyfill": "8.1.0",
"remove-strict-webpack-plugin": "^0.1.2",
"vue": "^2.5.11",
"vue-router": "^3.0.2",
"vue-server-renderer": "^2.5.21",
"vue-tabs-component": "^1.5.0",
"vuejs-datepicker": "^1.5.4",
"webpack-merge": "^4.1.5"
},
"browserslist": [
"> 1%",
"last 2 versions",
"ie > 8"
],
"devDependencies": {
"@babel/preset-env": "^7.2.3",
"axios": "^0.18.0",
"babel-loader": "^7.1.2",
"babel-core": "^6.26.0",
"babel-plugin-es6-promise": "^1.1.1",
"babel-plugin-transform-object-assign": "^6.22.0",
"babel-preset-env": "^1.6.0",
"babel-preset-stage-3": "^6.24.1",
"cross-env": "^5.0.5",
"css-loader": "^0.28.7",
"vue-loader": "^13.0.5",
"vue-template-compiler": "^2.4.4",
"vuex": "^3.0.1",
"webpack": "^3.6.0",
"webpack-dev-server": "^3.1.10"
}
}Is there any way to rename or auto rewrite reserved words like this method['default']
My webpack.config
var path = require('path')
var webpack = require('webpack')
const RemoveStrictPlugin = require( 'remove-strict-webpack-plugin' );
module.exports = {
entry: './src/entry-client.js',
output: {
path: path.resolve(__dirname, './dist'),
publicPath: '/dist/',
filename: 'build.js'
},
module: {
rules: [
{
test: /\.css$/,
use: [
'vue-style-loader',
'css-loader'
],
},
{
test: /\.scss$/,
use: [
'vue-style-loader',
'css-loader',
'sass-loader'
],
},
{
test: /\.sass$/,
use: [
'vue-style-loader',
'css-loader',
'sass-loader?indentedSyntax'
],
},
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
loaders: {
// Since sass-loader (weirdly) has SCSS as its default parse mode, we map
// the "scss" and "sass" values for the lang attribute to the right configs here.
// other preprocessors should work out of the box, no loader config like this necessary.
'scss': [
'vue-style-loader',
'css-loader',
'sass-loader'
],
'sass': [
'vue-style-loader',
'css-loader',
'sass-loader?indentedSyntax'
]
}
// other vue-loader options go here
}
},
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'file-loader',
options: {
name: '[name].[ext]?[hash]'
}
}
]
},
resolve: {
alias: {
'vue$': 'vue/dist/vue.esm.js'
},
extensions: ['*', '.js', '.vue', '.json']
},
devServer: {
historyApiFallback: true,
noInfo: true,
overlay: true
},
performance: {
hints: false
},
devtool: '#eval-source-map'
}
if (process.env.NODE_ENV === 'production') {
module.exports.devtool = '#source-map'
// http://vue-loader.vuejs.org/en/workflow/production.html
module.exports.plugins = (module.exports.plugins || []).concat([
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"production"'
}
}),
new webpack.optimize.UglifyJsPlugin({
sourceMap: true,
compress: {
warnings: false
},
"uglifyOptions": {
"ie8": true,
"mangle": {
"reserved": ['default']
}
}
}),
new webpack.LoaderOptionsPlugin({
minimize: true
}),
new RemoveStrictPlugin()
])
}
webpack.server.config
var path = require('path')
var webpack = require('webpack')
var merge = require('webpack-merge')
var baseWebpackConfig = require('./webpack.config')
var webpackConfig = merge(baseWebpackConfig, {
target: 'node',
entry: {
app: './src/entry-server.js'
},
devtool: "none",
output: {
path: path.resolve(__dirname, './dist'),
filename: 'server.bundle.js',
libraryTarget: 'commonjs2'
},
externals: Object.keys(require('./package.json').dependencies),
plugins: [
new webpack.DefinePlugin({
'process.env': 'production'
})
]
})
module.exports = webpackConfig
.babelrc
{
"presets": [
["env", { "modules": false }],
"stage-3"
],
"plugins": [
"transform-object-assign",
"es6-promise",
"array-includes"
]
}
Metadata
Metadata
Assignees
Labels
No labels

