MacOS调试Azure Functions出现/dev/shm路径访问被拒绝报错如何解决
问题根因
Azure Functions Core Tools默认在类Unix系统中使用/dev/shm路径作为共享内存存储目录,但macOS系统默认未挂载该tmpfs路径,即使手动创建空目录也会因为挂载规则、权限配置不匹配触发访问拒绝报错。此前使用sudo启动VS Code的操作不生效,是因为Functions运行时的权限继承规则不跟随VS Code的启动权限,无法解决路径本身的配置问题。
修复方案
方案一(推荐,无需修改系统配置)
直接关闭Azure Functions的共享内存数据传输功能即可,操作步骤:
- 打开Azure Functions项目根目录下的
local.settings.json文件 - 在
Values配置节点中新增配置项:
"FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED": "false"
如果项目中不存在该文件,可手动创建,基础模板如下(将运行时替换为你实际使用的类型,如node、python、java等):
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED": "false" } }
- 保存文件后重启调试,报错即可消除。
方案二(保留共享内存功能,临时生效)
如果需要保留共享内存功能,可执行以下命令手动挂载/dev/shm路径,该配置在系统重启后会失效:
sudo mkdir -p /dev/shm sudo mount -t tmpfs tmpfs /dev/shm sudo chmod 1777 /dev/shm
执行完成后重启调试即可。
内容的提问来源于stack exchange,提问作者Wahalez
相关产品推荐
相关产品推荐

