解决webStorm在运行vue项目时运行内存溢出造成的崩溃问题

目录


问题描述

        最近在使用webstorm运行vue项目时,总会运行崩溃,查看报错信息后发现是内存溢出造成的问题,经过一系列的查询资料后发现node在64位系统最大内存为1.4G左右,32位系统为0.7G左右,当项目太大后运行时占用内存超过最大内存就会导致项目内存溢出造成运行崩溃。

解决方案

1.安装两个库

代码如下(示例):

> npm install increase-memory-limit   
> npm install cross-env

increase-memory-limit 库可以将 Node.js 进程的内存限制提高到更高的级别,从而提高应用程序的性能和稳定性。Node.js 是基于 V8 引擎构建的,V8 引擎会对每个 Node.js 进程的内存使用进行限制,一旦超过限制就会导致进程崩溃。 increase-memory-limit 则可以提高这个限制,让应用程序在处理大量数据或者高并发请求时不易出现内存报错、奔溃等问题。

cross-env 则是一个跨平台的命令行工具,可以在不同的操作系统和环境下,设置和使用环境变量。在开发中,我们常常需要采用不同方式来运行应用程序,例如不同的端口、不同的数据库连接等。而这些配置通常都需要通过环境变量来传递,以便应用程序可以在不同的环境中正确地运行。 cross-env 可以在不同的命令行中正确设置环境变量,确保应用程序在不同的环境下都能够正常运行。

2.在package.json中配置

代码如下(示例):

  "scripts": {
    "fix-memory-limit": "cross-env LIMIT=4096 increase-memory-limit"
  },

这里的 fix-memory-limit 是一个自定义的 npm 脚本命令,在项目根目录下的 package.json 文件中设置。它是通过 cross-env LIMIT=4096 increase-memory-limit 命令来执行 increase-memory-limit 库的。具体来说:

  • cross-env 是一个跨平台的命令行工具,可以在不同的操作系统和环境下,设置和使用环境变量。在这里,使用cross-env 命令来设置一个名为 LIMIT 的环境变量,将其值设置为 4096。
  • 然后,使用管道符号 | 将 cross-env 命令的输出作为输入传递给 increase-memory-limit 命令。
  • increase-memory-limit 命令会修改 Node.js 进程的最大内存限制,让应用程序可以更高效地运行。

因此,当你在命令行中运行 npm run fix-memory-limit 时,实际上就相当于运行了 cross-env LIMIT=4096 increase-memory-limit 命令。这个命令的作用是将 Node.js 进程的内存限制提高到 4096 MB(即 4 GB),从而提高应用程序的性能和稳定性。

3.命令执行

执行命令如下:

> npm run fix-memory-limit

具体作用已经在步骤二中做了详细解释

4.项目重启

执行npm run fix-memory-limit命令,成功后重启项目即可,但是如果项目重启时发现如下报错:

'"node --max-old-space-size=4096"' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

找到路径为:node_modules\.bin\webpack-dev-server.cmd文件,内容为:

@ECHO off
SETLOCAL
CALL :find_dp0

IF EXIST "%dp0%\node.exe --max-old-space-size=4096" (
  SET "_prog=%dp0%\node.exe --max-old-space-size=4096"
) ELSE (
  SET "_prog=node --max-old-space-size=4096"
  SET PATHEXT=%PATHEXT:;.JS;=;%
)

"%_prog%"  "%dp0%\..\webpack-dev-server\bin\webpack-dev-server.js" %*
ENDLOCAL
EXIT /b %errorlevel%
:find_dp0
SET dp0=%~dp0
EXIT /b

将"%_prog%"的双引号去掉就可以了,这是因为将 "%_prog%"的双引号去掉,是为了确保操作系统可以正确解析 node 命令的路径。在 Windows 系统中,命令行参数包含空格时需要使用双引号将其括起来,否则操作系统会将该参数拆分成多个部分处理,导致命令无法执行。在这里,"%_prog%" 括起来是为了保证 "node --max-old-space-size=4096"这个字符串作为一个整体被传递给操作系统,从而正确启动 Node.js 进程。

但是,如果系统环境变量中已经正确配置了 Node.js 的路径,那么操作系统会自动查找并解析 node 命令的路径,此时就不需要使用双引号括起来了。因此,在这种情况下,将 "%_prog%"的双引号去掉也不会影响脚本的执行效果,反而可以减少不必要的字符输入。

再次重启项目后应该就可正确执行啦!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值