当 index.js 有 "require('mysql2');"

问题描述

目的

我想使用 MysqL2 (npm)。

步骤

  1. 通过 brew install MysqL 安装 MysqL,进行设置以确保我可以通过 MysqL -r root -p 登录
  2. 运行 npm initnpm install MysqL2 --save
  3. 创建index.js(见下文)
  4. 运行node index.js
  5. 查看下面的错误

步骤(检查 MysqL2 是否导致问题)

  1. 注释掉 index.js 的第二行
  2. 运行node index.js
  3. 确认终端显示“BEFORE”和“AFTER”没有错误

index.js

console.log('BEFORE');
const MysqL = require('MysqL2');
console.log('AFTER');

控制台(错误消息)

BEFORE

<--- Last few GCs --->

[3203:0x150008000]       34 ms: Scavenge 2.8 (4.6) -> 2.5 (5.3) MB,0.5 / 0.0 ms  (average mu = 1.000,current mu = 1.000) allocation failure 
[3203:0x150008000]       42 ms: Scavenge 3.8 (7.8) -> 3.5 (8.5) MB,0.3 / 0.0 ms  (average mu = 1.000,current mu = 1.000) allocation failure 

<--- JS stacktrace --->

Fatal error: wasm code commit Allocation Failed - process out of memory
1: 0x1040fe9d8 node::Abort() [/Users/{MY_USER_NAME}/.nvm/versions/node/v14.15.5/bin/node]
...
63: 0x10492c1e8 Builtins_JSEntry [/Users/{MY_USER_NAME}/.nvm/versions/node/v14.15.5/bin/node]
64: 0x150008000 
zsh: abort      node index.js

环境

  • Mackbook Air(M1,2020 年)
  • macOS:11.2.2
  • 节点:14.15.5
  • npm:7.6.1
  • MysqL2 (npm):2.2.5
  • MysqL (brew): Ver 8.0.23 for osx10.16 on x86_64 (Homebrew)

解决方法

我遇到了同样的问题。从节点 v14 升级到 v15 解决了它。