Плагин 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