You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS在系统根目录创建目录遭遇EROFS只读文件系统错误的技术咨询

解决Mac系统中创建目录时的EROFS只读文件系统错误

首先得明确一个关键误区:你混淆了系统根目录/和用户主目录~。从Catalina版本开始,Mac的系统根目录/受系统完整性保护(SIP)限制,处于只读状态,所以直接尝试创建/test必然会触发权限错误。而你提到的存放全局node_modules、文档、桌面的~目录,实际对应/Users/你的用户名/,这个目录拥有完全读写权限,才是你应该用来创建个人项目文件夹的正确位置。

下面给你几个具体的解决方案,包括原生Node.js方法和第三方工具包:

1. 使用Node.js原生模块修正路径并创建多级目录

Node.js的fs.mkdir支持recursive: true参数一键创建多级目录,同时我们可以用os.homedir()来正确解析用户主目录(避免手动写死路径导致的兼容性问题):

const fs = require('fs');
const os = require('os');
const path = require('path');

// 构建目标路径:对应~/SOME_DIR/ANOTHER_DIR
const targetDir = path.join(os.homedir(), 'SOME_DIR', 'ANOTHER_DIR');

fs.mkdir(targetDir, { recursive: true }, (err) => {
  if (err) {
    res.status(500).json({ status: 'fail', err, error: err.message });
  } else {
    res.json({ status: 'success', message: '多级目录创建完成' });
  }
});

2. 使用第三方工具包mkdirp简化操作

mkdirp是一个专门用来递归创建目录的工具包,语法更简洁,还支持Promise和async/await写法,非常适合处理多级目录场景:

第一步:安装依赖

npm install mkdirp

第二步:Promise版本代码

const mkdirp = require('mkdirp');
const os = require('os');
const path = require('path');

const targetDir = path.join(os.homedir(), 'SOME_DIR', 'ANOTHER_DIR');

mkdirp(targetDir)
  .then(() => res.json({ status: 'success', message: '目录创建成功' }))
  .catch(err => res.status(500).json({ status: 'fail', err, error: err.message }));

第三步:async/await版本(更优雅)

const mkdirp = require('mkdirp');
const os = require('os');
const path = require('path');

async function createTargetDir() {
  try {
    const targetDir = path.join(os.homedir(), 'SOME_DIR', 'ANOTHER_DIR');
    await mkdirp(targetDir);
    res.json({ status: 'success', message: '目录创建成功' });
  } catch (err) {
    res.status(500).json({ status: 'fail', err, error: err.message });
  }
}

createTargetDir();

额外提醒:关于系统根目录的读写

如果你确实有特殊需求要在系统根目录附近创建文件夹,强烈不建议关闭SIP(会大幅降低系统安全性),可以考虑使用/Users/Shared目录——这是Mac预留的全局可写目录,适合存放多用户共享的文件。

内容的提问来源于stack exchange,提问作者Akash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 17:52:51