Vue-cli: webpackjsonp is not defined?

Created on 30 Nov 2017  路  3Comments  路  Source: vuejs/vue-cli

var path = require('path')
var utils = require('./utils')
var webpack = require('webpack')
var config = require('../config')
var merge = require('webpack-merge')
var baseWebpackConfig = require('./webpack.base.conf')
var CopyWebpackPlugin = require('copy-webpack-plugin')
var HtmlWebpackPlugin = require('html-webpack-plugin')
var ExtractTextPlugin = require('extract-text-webpack-plugin')
var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin');
var babelpolyfill = require("babel-polyfill");

var env = config.build.env

var webpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({
sourceMap: config.build.productionSourceMap,
extract: true
})
},
devtool: config.build.productionSourceMap ? '#source-map' : false,
output: {
path: config.build.assetsRoot,
filename: utils.assetsPath('js/[name].js'),
chunkFilename: utils.assetsPath('js/[id].js')
},
plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
'process.env': env
}),
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
},
sourceMap: true
}),
// extract css into its own file
new ExtractTextPlugin({
filename: utils.assetsPath('css/[name].[contenthash].css')
}),
// Compress extracted CSS. We are using this plugin so that possible
// duplicated CSS from different components can be deduped.
new OptimizeCSSPlugin({
cssProcessorOptions: {
safe: true
}
}),
// generate dist index.html with correct asset hash for caching.
// you can customize output by editing /index.html
// see https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: config.build.index,
template: 'index.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
},
chunks: ['manifest', 'vendor', 'app'],
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: 'dependency'
}),
// split vendor js into its own file
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: function (module, count) {
// any required modules inside node_modules are extracted to vendor
return (
module.resource &&
/.js$/.test(module.resource) &&
module.resource.indexOf(
path.join(__dirname, '../node_modules')
) === 0
)
}
}),

// extract webpack runtime and module manifest to its own file in order to
// prevent vendor hash from being updated whenever app bundle is updated
new webpack.optimize.CommonsChunkPlugin({
  name: 'manifest',
  chunks: ['vendor']
}),
// copy custom static assets
new CopyWebpackPlugin([
  {
    from: path.resolve(__dirname, '../static'),
    to: config.build.assetsSubDirectory,
    ignore: ['.*']
  }
])

]
})

if (config.build.productionGzip) {
var CompressionWebpackPlugin = require('compression-webpack-plugin')

webpackConfig.plugins.push(
new CompressionWebpackPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: new RegExp(
'\.(' +
config.build.productionGzipExtensions.join('|') +
')$'
),
threshold: 10240,
minRatio: 0.8
})
)
}

if (config.build.bundleAnalyzerReport) {
var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}

module.exports = webpackConfig

Most helpful comment

I have the same issue about this when i try to import armory-embeds.js. The reason is vue-cli-3.0 use webpack > 3 version.

There is a workable solution. Related link : Migrating to Webpack 4 from Webpack 3

// vue.config.js
module.exports = {
  configureWebpack: {
    output: {
      jsonpFunction: 'jsonpFunction'
    }
  }
}

All 3 comments

Hi, thanks for your interest but Github issues are for bug reports and feature requests only. You can ask questions on the forum, the Discord server, gitter or StackOverflow.

I'm having this issue after switching to vue-cli v3 and running a build, I'm coming from the webpack template. npm run serve works fine. @ergonomicus @JIANGYUJING1995 any clue as to what the error is about?

Update

for me it was related to https://github.com/webpack/webpack/issues/6522

vue-pdf and pdfjs need globalObject set in development, but if set to this in production, it will break your build

// vue.config.js
module.exports = {
  configureWebpack: output => {
    if (process.env.NODE_ENV !== 'production' || process.env.NODE_ENV !== 'testing') {
      return { globalObject: 'this' }
    }
  }
}

I have the same issue about this when i try to import armory-embeds.js. The reason is vue-cli-3.0 use webpack > 3 version.

There is a workable solution. Related link : Migrating to Webpack 4 from Webpack 3

// vue.config.js
module.exports = {
  configureWebpack: {
    output: {
      jsonpFunction: 'jsonpFunction'
    }
  }
}
Was this page helpful?
0 / 5 - 0 ratings

Related issues

NathanKleekamp picture NathanKleekamp  路  3Comments

Akryum picture Akryum  路  3Comments

Gonzalo2683 picture Gonzalo2683  路  3Comments

pecliu picture pecliu  路  3Comments

eladcandroid picture eladcandroid  路  3Comments