我为一个小型 React webapp 项目创建了一个全新的 Vagrant + VirtualBox debian/buster64
虚拟机(2GB,2 核)。
使用 yarn
配置和安装依赖项工作正常,但是当通过 yarn start:client
启动应用程序的客户端时(parcel index.client 的脚本简写)。 html --port 3000
), 我收到以下错误:
[错误:std::bad_alloc]
创建一个新的 VM 并调整内存和核心使用情况并没有解决问题。 VirtualBox 没有显示任何问题的迹象,并且盒子内的内存使用率非常低。在尝试启动应用程序期间通过 free -c 10
观察内存波动显示在抛出错误时内存突然下降之前正在分配。
没有提供额外的错误详细信息。
Package.json:
{
"name": "",
"version": "0.1.0",
"description": "",
"scripts": {
"start": "node server/server.js",
"start:client": "parcel index.html --port 3000",
"start:server": "nodemon ./server/server --watch server/ --port 3001",
"build": "parcel build index.html"
},
"license": "MIT",
"engine": "14.15.3",
"dependencies": {
"axios": "^0.21.1",
"axios-retry": "^3.1.9",
"cache-all": "^2.1.1",
"cors": "^2.8.5",
"dayjs": "^1.10.1",
"dotenv": "^8.2.0",
"express": "^4.17.1",
"gps-distance": "^0.0.4",
"less": "^4.1.1",
"lodash": "^4.17.20",
"milligram": "^1.4.1",
"nodemon": "^2.0.6",
"ramda": "^0.27.1",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-ga": "^3.3.0",
"react-modal": "^3.12.1",
"react-spinners": "^0.10.4",
"rsuite-table": "^3.14.2"
},
"devDependencies": {
"@parcel/transformer-css": "^2.0.0-alpha.3",
"@parcel/transformer-postcss": "^2.0.0-alpha.3",
"babel-preset-nano-react-app": "^0.1.0",
"parcel": "next",
"sass": "^1.32.4"
},
"babel": {
"presets": [
"nano-react-app"
],
"plugins": [
[
"@babel/plugin-proposal-class-properties",
{
"loose": true
}
],
[
"@babel/plugin-transform-react-jsx",
{
"pragmaFrag": "React.Fragment"
}
]
]
}
}
最佳答案
经过反复试验,我将问题追溯到 Parcel 包的缓存。
首先,我尝试自行启动应用程序的服务器 (API) 部分 (yarn start:server
),启动没有问题。
其次,我尝试在不指定端口号的情况下启动应用程序的客户端 (node_modules/parcel/lib/bin.js index.html
)。该应用程序正确启动且没有问题。
第三,我再次正常启动客户端(yarn start:client
),bad_alloc
错误又出现了。
第四,我使用 --no-cache
标志启动客户端。没有错误。
最后(TL;DR),我删除了缓存目录(rm -fr .parcel-cache
),然后重启客户端侧如常。应用构建正确且没有错误。
到目前为止,我已经多次重启客户端,没有出现问题。目前还不清楚 Parcel 的缓存是什么导致了这个问题。希望这可以避免有人翻 table 。
关于reactjs - 为什么我在启动 React 应用程序时收到错误 "[Error: std::bad_alloc]"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66149645/