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

Mac M2芯片下使用protoc生成Dart文件遇权限拒绝问题

在M2 MacBook Air上解决protoc生成Dart文件的权限与执行问题

先处理mkdir的冗余提示

mkdir: lib/src/shared/dart_gen: File exists只是警告,不会影响后续命令,改成带-p参数的mkdir就能避免这个提示:

mkdir -p lib/src/shared/dart_gen

-p会自动创建缺失的父目录,目标目录已存在时也不会报错。

解决核心的权限拒绝与文件缺失问题

你命令里的**反引号是错误用法**——zsh中反引号用来执行子命令,导致系统尝试把proto文件路径当作命令执行,这才是触发权限拒绝的根本原因!把换行用的反引号换成反斜杠`,再按以下步骤排查:

1. 修正protoc命令的换行语法

把命令里的反引号全部替换成反斜杠,正确的命令格式:

protoc --dart_out=grpc:lib/src/shared/dart_gen --proto_path=lib/src/shared/proto \
    lib/src/shared/proto/shared.proto \
    lib/src/shared/proto/consumer/consumer.proto \
    lib/src/shared/proto/order/order.proto

2. 检查并修复文件权限

如果修正语法后还是有权限问题,检查proto文件的权限:

# 查看文件权限详情
ls -l lib/src/shared/proto/
ls -l lib/src/shared/proto/consumer/
ls -l lib/src/shared/proto/order/

如果当前用户没有读权限,执行以下命令修改:

# 将目录及文件的所属用户改为当前用户
sudo chown -R $(whoami):staff lib/src/shared/proto/
# 给当前用户增加读写权限,其他用户增加读权限
sudo chmod -R u+rw,g+r,o+r lib/src/shared/proto/

3. 确认Dart proto插件已安装

protoc生成Dart文件需要依赖专门的插件,确保插件已安装并配置到环境变量:

# 激活插件
dart pub global activate protoc_plugin
# 将插件路径加入环境变量(可以把这行加到~/.zshrc里永久生效)
export PATH="$PATH":"$HOME/.pub-cache/bin"

完整可执行命令

mkdir -p lib/src/shared/dart_gen
protoc --dart_out=grpc:lib/src/shared/dart_gen --proto_path=lib/src/shared/proto \
    lib/src/shared/proto/shared.proto \
    lib/src/shared/proto/consumer/consumer.proto \
    lib/src/shared/proto/order/order.proto

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:32:20