Плагин Webpack Uglify возвращает "Killed" на Ubuntu

На моем удаленном сервере (Ubuntu 14.04 x64) всякий раз, когда я пытаюсь угадать мои пакеты, процесс просто возвращает "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;

и он называется gulp следующим образом:

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

Ответ 1

Как предположил @barbuza, это была проблема с памятью. Я тоже использую Digital Ocean VPS, который имеет только 512 МБ ОЗУ (да, я дешев). Этого недостаточно для webpack uglify plugin. Добавление 2 Гбайт пространства подкачки на сервере решило проблему. Я последовал этой статье, чтобы установить это: https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04

Ответ 2

То же самое произошло со мной, когда Digital Ocean VPS использовался, как упоминалось выше, - это происходит из-за того, что сборка занимает много оперативной памяти для вашей машины, так что это "нехватка памяти".

Чтобы решить эту проблему, вы можете минимизировать использование оперативной памяти во время компиляции файла с помощью ---max_old_space_size, здесь приведен расширенный пример использования

node --max_old_space_size=1096 node_modules/webpack/.bin/webpack.js

Конечно, вы можете выбрать любой размер, также вы можете сделать то же самое с webpack-dev-server. И вам не нужно добавлять пространство подкачки, пока оно действительно не понадобится для других целей, например, если вы выполните эту команду только один раз, чтобы скомпилировать файл bundle.js.

Ответ 3

У меня была одна и та же проблема с цифровым океаном vm, оказалось, что никакой смены не было настроено, поэтому у него просто закончилась память.

Ответ 4

Вы также можете запустить ng build на своем локальном компьютере, а затем скопировать папку dist на свой пульт, например:

scp -r path/to/local/folder [email protected]:/path/to/remote/folder