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
相关产品推荐
相关产品推荐

