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

M1版macOS下VSCode开发Actix-Web报proc macro架构不兼容错误

问题描述
  • 基于Rust语言、Actix-Web框架按照官方入门文档搭建Web服务,服务可正常在8080端口运行,但VSCode编辑器中持续显示错误提示
  • 错误截图:VSCode内Actix-Web宏展开错误提示
  • 鼠标悬停IDE错误标识时,弹出的完整报错信息如下:

proc macro main not expanded: Cannot create expander for /Users/name/Documents/projects/project-rust/target/debug/deps/libactix_web_codegen-b262af45f63000f3.dylib: Io(Custom { kind: InvalidData, error: DlOpen { desc: "dlopen(/Users/name/Documents/projects/project-rust/target/debug/deps/libactix_web_codegen-b262af45f63000f3.dylib, 0x000A): tried: '/Users/name/Documents/projects/project-rust/target/debug/deps/libactix_web_codegen-b262af45f63000f3.dylib' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/usr/local/lib/libactix_web_codegen-b262af45f63000f3.dylib' (no such file), '/usr/lib/libactix_web_codegen-b262af45f63000f3.dylib' (no such file)" } })

  • 设备运行环境:macOS Monterey 12.1,搭载M1系列芯片
故障原因

报错核心是架构不匹配:本地终端使用的Rust工具链是arm64原生版本,编译出的Actix-Web过程宏动态库为arm64架构,服务可以正常编译运行;但VSCode内的rust-analyzer插件运行在x86_64架构下(一般是VSCode被设置为通过Rosetta转译启动,或者安装了x86版本的rust-analyzer),无法加载arm64架构的宏文件,最终触发宏展开失败的IDE错误。

修复步骤
  • 完全退出VSCode,清除程序后台进程
  • 打开访达进入应用程序目录,找到Visual Studio Code图标,右键选择「显示简介」,取消勾选「使用Rosetta打开」选项后关闭简介窗口
  • 重新打开VSCode,进入扩展面板,找到已安装的rust-analyzer扩展,执行卸载操作,完成后重启VSCode,重新安装最新版rust-analyzer
  • 回到项目根目录,在终端执行命令清理历史编译缓存:
cargo clean
  • 再次用VSCode打开项目,等待rust-analyzer完成依赖索引、元数据加载后,错误提示会自动消失。

如果上述操作完成后问题仍存在,终端执行rustup show,检查输出的host字段值:

  • 若值为x86_64-apple-darwin,说明本地Rust工具链是x86转译版本,卸载后重装arm64原生版本的rustup即可
  • 若值为aarch64-apple-darwin,重启rust-analyzer服务即可:VSCode内按Cmd+Shift+P,搜索rust-analyzer: Restart server执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:45:48