修复mac系统下node22安装模块报fatal error: ‘memory‘ file not found错误的问题

完整报错信息:

复制代码
>npm --verbose
npm ERR! code 1
npm ERR! path /Users/LAURIEN/Dev/ips-core-apis-internal-v2/node_modules/libpq
npm ERR! command failed
npm ERR! command sh -c node-gyp rebuild
npm ERR! CXX(target) Release/obj.target/addon/src/connection.o
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@10.0.1
npm ERR! gyp info using node@21.2.0 | darwin | arm64
npm ERR! gyp info find Python using Python version 3.11.5 found at "/opt/homebrew/opt/python@3.11/bin/python3.11"
npm ERR! gyp info spawn /opt/homebrew/opt/python@3.11/bin/python3.11
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args '/Users/LAURIEN/.nvm/versions/node/v21.2.0/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
npm ERR! gyp info spawn args 'binding.gyp',
npm ERR! gyp info spawn args '-f',
npm ERR! gyp info spawn args 'make',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/Users/LAURIEN/Dev/ips-core-apis-internal-v2/node_modules/libpq/build/config.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/Users/LAURIEN/.nvm/versions/node/v21.2.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/Users/LAURIEN/Library/Caches/node-gyp/21.2.0/include/node/common.gypi',
npm ERR! gyp info spawn args '-Dlibrary=shared_library',
npm ERR! gyp info spawn args '-Dvisibility=default',
npm ERR! gyp info spawn args '-Dnode_root_dir=/Users/LAURIEN/Library/Caches/node-gyp/21.2.0',
npm ERR! gyp info spawn args '-Dnode_gyp_dir=/Users/LAURIEN/.nvm/versions/node/v21.2.0/lib/node_modules/npm/node_modules/node-gyp',
npm ERR! gyp info spawn args '-Dnode_lib_file=/Users/LAURIEN/Library/Caches/node-gyp/21.2.0/<(target_arch)/node.lib',
npm ERR! gyp info spawn args '-Dmodule_root_dir=/Users/LAURIEN/Dev/ips-core-apis-internal-v2/node_modules/libpq',
npm ERR! gyp info spawn args '-Dnode_engine=v8',
npm ERR! gyp info spawn args '--depth=.',
npm ERR! gyp info spawn args '--no-parallel',
npm ERR! gyp info spawn args '--generator-output',
npm ERR! gyp info spawn args 'build',
npm ERR! gyp info spawn args '-Goutput_dir=.'
npm ERR! gyp info spawn args ]
npm ERR! gyp info spawn make
npm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
npm ERR! In file included from ../src/connection.cc:1:
npm ERR! In file included from ../src/addon.h:4:
npm ERR! In file included from ../../nan/nan.h:62:
npm ERR! In file included from /Users/LAURIEN/Library/Caches/node-gyp/21.2.0/include/node/node.h:73:
npm ERR! /Users/LAURIEN/Library/Caches/node-gyp/21.2.0/include/node/v8.h:21:10: fatal error: 'memory' file not found
npm ERR!    21 | #include <memory>
npm ERR!       |          ^~~~~~~~
npm ERR! 1 error generated.
npm ERR! make: *** [Release/obj.target/addon/src/connection.o] Error 1
npm ERR! gyp ERR! build error 
npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2
npm ERR! gyp ERR! stack at ChildProcess.<anonymous> (/Users/LAURIEN/.nvm/versions/node/v21.2.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:209:23)
npm ERR! gyp ERR! System Darwin 24.0.0
npm ERR! gyp ERR! command "/Users/LAURIEN/.nvm/versions/node/v21.2.0/bin/node" "/Users/LAURIEN/.nvm/versions/node/v21.2.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
npm ERR! gyp ERR! cwd /Users/LAURIEN/Dev/ips-core-apis-internal-v2/node_modules/libpq
npm ERR! gyp ERR! node -v v21.2.0
npm ERR! gyp ERR! node-gyp -v v10.0.1
npm ERR! gyp ERR! not ok

npm ERR! A complete log of this run can be found in: /Users/LAURIEN/.npm/_logs/2024-10-03T16_11_16_400Z-debug-0.log
Usage: npm <command>
(...)

错误原因分析:

错误发生在编译本地 C++ 扩展 deasync 时(node-gyp 调用 make),日志关键行:

fatal error: 'memory' file not found --- 表明 C++ 标准头文件(例如 <memory>)不可见给编译器。

常见导致原因:

macOS 的 C/C++ 标准库头文件/SDK 没有安装或命令行工具路径未配置正确(Xcode Command Line Tools / Xcode)。

Xcode 许可未接受或 xcode-select 指向不正确的位置。

Node 版本与该包/预编译二进制不兼容,导致回退到本地编译(如果本机缺少编译环境就会失败)。

在 Apple Silicon(arm64)与 Node 新版本下,某些包还没有预编译二进制。

解决方法:

  1. 检查并安装 Xcode 命令行工具(若未安装)
  • 检查安装状态:
bash 复制代码
xcode-select -p
  • 如果没有安装或路径不正确,运行:
bash 复制代码
xcode-select --install
  1. 确认 xcode-select 指向正确的工具链并接受许可
bash 复制代码
# 指向 Command Line Tools(如果你安装了 full Xcode,可指向 /Applications/Xcode.app/Contents/Developer)
sudo xcode-select -s /Library/Developer/CommandLineTools
  1. 确保 SDKROOT 环境变量可被 node-gyp 识别(有时需要显式导出)
bash 复制代码
export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"
# 验证
echo $SDKROOT
  1. 清理并重建本地模块
bash 复制代码
# 在项目根目录执行
rm -rf node_modules
rm -f package-lock.json
npm cache clean --force

# 然后重新安装
npm install
  1. 若仍失败,尝试使用较稳定/兼容的 Node 版本(如 Node 18)
相关推荐
小霍同学7 小时前
Node.js 起步指南
node.js
codingWhat7 小时前
用 Express 简单Mock自助终端机读取身份证
node.js·express
北冥有鱼被烹7 小时前
【vibo经验记录】Mac 配置 Claude Code + 远程 Ollama 完全指南
macos·claude code·openclaw
回到原点的码农7 小时前
TypeScript 与后端开发Node.js
javascript·typescript·node.js
skiy8 小时前
Webpack、Vite区别知多少?
前端·webpack·node.js
Luna-player8 小时前
npm install vue-awesome-swiper@5.0.1 swiper@7.4.1安装后,我又想全删了,怎么移除
前端·vue.js·npm
无巧不成书02188 小时前
FFmpeg 保姆级安装教程!Windows/macOS/Linux全平台覆盖,
windows·macos·ffmpeg
I'm Jie8 小时前
MacOS 国内镜像一键安装 Homebrew
git·macos·homebrew
lucky_syq9 小时前
Mac电脑部署OpenClaw保姆级教程(2026最新版)
人工智能·macos·开源·电脑·openclaw
todoitbo19 小时前
用虚拟局域网打通 Win/Mac/Linux 三端:跨设备协作的实用方案
linux·运维·macos