Node.js 带网页包的OpenLayers v3

Node.js 带网页包的OpenLayers v3,node.js,webpack,openlayers-3,uglifyjs,Node.js,Webpack,Openlayers 3,Uglifyjs,您好,我目前正在使用OpenLayers v3和Webpack。当我不使用UglifyJS时,它工作得很好。但当我添加我的uglifyJS配置时,它就不再编译了 我的UglifyJS配置 new webpack.optimize.UglifyJsPlugin({ minimize: true, sourceMap: false, compress: { warnings: false, se

您好,我目前正在使用OpenLayers v3和Webpack。当我不使用UglifyJS时,它工作得很好。但当我添加我的uglifyJS配置时,它就不再编译了

我的UglifyJS配置

     new webpack.optimize.UglifyJsPlugin({
        minimize: true,
        sourceMap: false,
        compress: {
            warnings: false,
            sequences: true,
            dead_code: true,
            conditionals: true,
            booleans: true,
            unused: true,
            if_return: true,
            join_vars: true,
            drop_console: true
        }
    }),
我得到了这个错误

from UglifyJs RangeError: Maximum call stack size exceeded
我正在使用
dist/ol.js
文件


知道如何解决这个问题吗?

这是我在我的网页项目中加载ol3的方式:

webpack.config.js:

...

resolve: {
  alias: {
    openlayers3: "openlayers/dist/ol.js",
  },
},

plugins: [
  new webpack.ProvidePlugin({
    ol: "openlayers3",
  }),
]

...
提供插件加载模块,并使其在应用程序中全局可用。您不再需要在js文件中导入ol3


这里也有同样的问题。通过使用CommonChunkPlugin将openlayers移动到自己的块中,然后在UglifyJsPlugin中忽略该块来解决

参赛作品:

entry: {
    vendor: Object.keys(packageDotJson.dependencies),
    openlayers: ['openlayers'],
    app: './src/index.jsx'
}
CommonChunk插件:

new webpack.optimize.CommonsChunkPlugin({
    names: ["openlayers", "vendor"],
    minChunks: Infinity,
    filename: "[name].[hash].js"
}),
UglifyJsPlugin:

new webpack.optimize.UglifyJsPlugin({
    compress: {
        warnings: false
    },
    exclude: 'openlayers'
}),
然后使用HtmlWebpackPlugin将其包含在html模板中:

<% for (var chunk in htmlWebpackPlugin.files.chunks) { %>
<script src="<%=htmlWebpackPlugin.files.chunks[chunk].entry %>"></script>
<% } %>


这不是你的?Different issue@JonatasWalker:/的副本吗?但它是在主输出文件中添加ol3库,还是按需添加(当页面需要ol3时)?是的,这样ol3将捆绑在主文件中OpenLayers仅在需要时加载?不,不是真的。要做到这一点,您必须设置多个入口点,为每个入口点生成一个单独的html文件,或者在webpack2中使用require.sure或System.import