Webpack Uglify插件在Ubuntu上返回"Killed"

ccn*_*kes 15 gulp webpack

在我的远程服务器(Ubuntu 14.04 x64)上,每当我尝试uglify我的包时,该过程只返回"Killed".当我不丑化时,它就没事了.

有没有人碰到这个?当我在我的本地Mac上这样做时,它很好(虽然我只是测试了它,花了1.4分钟).

这是我的webpack.config:

var webpack = require('webpack');

function makeConfig(opts) {
    var config = {

        entry: {
            app: ['./public/scripts/main.js'],
            vendor: ['lodash', 'react', 'react/lib/ReactCSSTransitionGroup', 'react-router', 'reqwest', 'd3']
        },

        stats: {
            colors: true,
            reasons: true
        },

        output: {
            devtool: (opts.env === 'dev' ? '#eval-source-map' : ''),
            path: 'dist/scripts',
            filename: '[name].bundle.js'
        },

        plugins: [
            new webpack.DefinePlugin({
                ENV: opts.env
            }),
            new webpack.optimize.CommonsChunkPlugin('vendor.bundle.js')
        ],

        module: {
            loaders: [
                { test: /\.jsx?$/, loader: 'jsx-loader' }
            ]
        }
    };

    if(opts.env === 'prod') {
        config.plugins.push(
            new webpack.optimize.UglifyJsPlugin(),
            new webpack.optimize.DedupePlugin()
        );
    }

    return config;
}

module.exports = makeConfig;
Run Code Online (Sandbox Code Playgroud)

它就像吞咽一样叫:

gulp.task('webpack', ['cleanScripts'], function(done) {
    webpack(webpackConfig, function(err, stats) {
        if(err) {
            console.error(err);
            throw new gutil.PluginError('webpack', err);    
        }
        else {
            done();
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

ccn*_*kes 24

正如@barbuza所说,这是一个内存问题.我也在使用只有512 MB RAM的数字海洋VPS(是的,我很便宜).对于webpack的uglify插件来说,这还不够.在服务器上添加2GB的交换空间解决了这个问题.我按照这篇文章进行了设置:https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04

  • 这里真正的解决方案是一起避免这个问题——在本地编译,然后使用 `scp`、`ftp` 或其他任何东西在服务器上的正确位置获取已编译的资产。 (3认同)

Pur*_*lex 5

如上所述,在使用Digital Ocean VPS时发生了同样的事情-发生这种情况是因为构建需要占用您的计算机大量的RAM,所以这是“内存不足”。

为了解决这个问题,您可以在通过---max_old_space_size选项编译文件时最大程度地减少RAM使用量,这是用法的高级示例

node --max_old_space_size=1096 node_modules/webpack/.bin/webpack.js
Run Code Online (Sandbox Code Playgroud)

当然,您可以选择任何大小,也可以使用webpack-dev-server进行选择。而且,您不需要添加交换空间,直到其他用途确实需要它为止,例如,只运行一次此命令即可编译bundle.js文件。