如何解决识别Webpack构建中的内存泄漏
我想知道是否有人可以在这里向我指出正确的方向。
当我运行开发服务器时,有时甚至在生产服务器上,构建会偶尔崩溃,原因是javascript堆内存不足。我尝试将调试器附加到webpack,据我所知,它在解析less-files时失败,但是我也看到它也发生在不同的阶段。
我绝对不知道如何解决此问题,但是与标准的“仅增加节点的--max-old-space-size”相比,有些事情告诉我必须解决此问题。我已经将堆空间增加了一倍,但有时仍然会遇到错误。目前,我已将其设置为使用8gb的ram,但仍然失败。
从调试器因潜在的内存不足崩溃而暂停时起,我附加了screenshot of debugger。您可能已经猜到了,我对Webpack还是陌生的,并且希望获得关于如何找到该问题根源的任何提示,因为它确实在影响我的工作流程。
webpack.config.js
// Path to the output folder
const rootFolder = "wwwroot";
const bundleFolder = `${rootFolder}/bundle`;
const customers = [
// ### Removed
];
let entry = {
load: "./ClientApp/load.ts",main: "./ClientApp/main.ts",};
customers.forEach((e) => {
entry[e] = `./ClientApp/www_files/${e}/${e}.ts`;
});
module.exports = (env,args) => {
const devMode = args.mode !== "production";
return {
entry: entry,output: {
path: path.resolve(__dirname,bundleFolder),publicPath: " ### Removed",filename: "[name].js",chunkFilename: "[id].[name].[chunkhash].js",},module: {
rules: [
{
test: /\.vue$/,loader: "vue-loader",{
test: /\.js$/,loader: "babel-loader",query: {
presets: ["es2015"],compact: devMode,{
test: /\.ts?$/,use: [
{
loader: "awesome-typescript-loader",],{
test: /\.css$/,use: [
devMode ? "vue-style-loader" : MiniCssExtractPlugin.loader,"css-loader",{
test: /\.scss$/,"sass-loader",{
test: /\.less$/,"less-loader",{
test: /\.(png|jpg|gif|svg)$/,loader: "file-loader",options: {
name: "[name].[ext]?[hash]",{
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,{
test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,{
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,{
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,{
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,{
test: /\.(html)$/,use: {
loader: "html-loader",options: {
attrs: [":data-src"],{
resourceQuery: /blockType=i18n/,type: "javascript/auto",loader: "@kazupon/vue-i18n-loader",resolve: {
extensions: [".ts",".js",".vue",".json"],alias: {
vue$: "vue/dist/vue.esm.js",devServer: {
contentBase: bundleFolder,// Added because of bug: https://github.com/webpack/webpack-dev-server/issues/1604
disableHostCheck: true,hot: true,overlay: true,headers: {
"Access-Control-Allow-Origin": "*","Access-Control-Allow-Methods":
"GET,POST,PUT,DELETE,PATCH,OPTIONS","Access-Control-Allow-Headers":
"X-Requested-With,content-type,Authorization",port: 8080,optimization: {
minimizer: [
new TerserPlugin(),new OptimizeCssAssetsPlugin({}),plugins: [
new CleanWebpackPlugin([bundleFolder]),new webpack.HotModuleReplacementPlugin(),new VueLoaderPlugin(),new CheckerPlugin(),new MiniCssExtractPlugin({
filename: "[name].css",chunkFilename: "[id].[name].[chunkhash].css",}),new HardSourceWebpackPlugin(),new webpack.IgnorePlugin(/^\.\/locale$/,/moment$/),};
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。