0

0

VSCode如何配置Erlang开发环境 VSCode搭建分布式系统的开发环境

蓮花仙者

蓮花仙者

发布时间:2025-08-06 14:26:01

|

196人浏览过

|

来源于php中文网

原创

要配置vscode中的erlang开发环境并搭建分布式系统开发环境,需按以下步骤操作:1. 安装erlang/otp,推荐使用asdf管理多版本;2. 在vscode中安装pguyot维护的“erlang”扩展,提供语法高亮、智能感知和调试功能;3. 在settings.json中设置"erlang.erlpath"确保扩展能找到erlang运行时;4. 利用vscode集成终端启动多个带节点名和cookie的erlang节点,实现本地分布式测试;5. 使用“remote - ssh”扩展连接远程服务器进行真实环境开发;6. 推荐使用dev containers功能,通过devcontainer.json和dockerfile定义包含erlang环境的容器,实现隔离且一致的开发环境;7. 在.vscode/tasks.json中配置rebar3任务,如编译、启动shell和运行测试,提升效率;8. 使用vscode内置git支持进行代码管理,结合多根工作区管理分布式系统的多个代码库。该方案完整支持erlang本地与远程分布式开发,确保环境一致性与高效协作。

VSCode如何配置Erlang开发环境 VSCode搭建分布式系统的开发环境

VSCode作为一款轻量但功能强大的代码编辑器,确实能很好地支持Erlang的开发,甚至能为分布式系统的搭建提供一个相当舒适的环境。核心在于几个关键的扩展和一些巧妙的配置,它能让你在本地模拟出复杂的分布式场景,或者直接连接到远程服务器进行开发和调试。

解决方案

要在VSCode中配置Erlang开发环境并搭建分布式系统的开发环境,你需要做几件事。首先,确保你的系统上已经安装了Erlang/OTP。这通常是第一步,你可以从Erlang官网下载预编译包,或者通过包管理器(如macOS上的Homebrew,Linux上的apt/yum)安装。我个人比较喜欢用

asdf
来管理Erlang版本,这样可以在不同项目间灵活切换,避免版本冲突带来的麻烦。

安装好Erlang后,打开VSCode,我们需要安装核心的Erlang扩展。在扩展市场搜索并安装由

pguyot
维护的“Erlang”扩展。这个扩展提供了语法高亮、代码补全、定义跳转、调试等核心功能,是VSCode中Erlang开发体验的基石。安装完成后,通常重启VSCode就能让它生效。

对于分布式系统的开发,VSCode的优势在于其强大的终端集成和远程开发能力。你可以在VSCode中同时打开多个终端窗口,每个窗口运行一个Erlang节点,通过节点名和cookie进行通信。更进一步,利用VSCode的“Remote - SSH”扩展,你可以直接连接到远程服务器,在服务器上进行Erlang开发,这对于测试真实分布式环境非常有用。

VSCode中Erlang开发环境的核心扩展与常见问题

谈到Erlang在VSCode里的开发,

Erlang
这个扩展绝对是重中之重。它不仅仅是提供了基础的语法高亮,说实话,它最吸引我的地方是它的智能感知(IntelliSense)能力,能根据你项目的
rebar.config
mix.exs
(如果你也写Elixir的话)来正确解析模块和函数,这在大型项目中尤其有用。调试功能也做得不错,你可以直接在代码里设置断点,然后启动调试会话,跟踪进程状态,这比纯命令行调试直观太多了。

不过,这里面也有些小坑。最常见的问题就是Erlang运行时路径没设置对。有时候你安装了Erlang,但VSCode里的扩展可能找不到

erl
命令。这通常可以通过在VSCode的用户设置(
settings.json
)中明确指定Erlang的安装路径来解决,比如设置
"erlang.erlPath": "/usr/local/bin/erl"
(这取决于你的Erlang安装位置)。另一个是调试器有时会连接不上,这可能和你的Erlang版本或者项目配置有关,我通常会检查一下
rebar3
的版本是不是最新,或者尝试清理一下项目缓存。

另外,我还喜欢搭配一些通用的VSCode扩展,比如

EditorConfig
来保持代码风格一致,
GitLens
来查看代码提交历史,这些都能极大提升开发效率,虽然它们不是Erlang特有的,但在任何项目里都挺香的。

利用VSCode搭建Erlang分布式开发环境的策略与实践

搭建Erlang分布式开发环境,我个人觉得VSCode的远程开发和容器化能力是真正的亮点。

最直接的方式,你可以在VSCode里打开多个集成终端。Erlang的分布式是基于节点名和cookie的,所以你可以在每个终端里启动一个Erlang节点,比如:

erl -sname node1@127.0.0.1 -setcookie my_secret_cookie

另一个终端:

多商户双网版电子商城CRMEB系统
多商户双网版电子商城CRMEB系统

基于ThinkPhp6+ swoole4+uniapp 开发的一套CRMEB新零售多商户商城系统。如果不会搭建请到 查看搭建说明系统环境推荐 使用 宝塔配置环境centos PHP7.3 mysql5.6新增功能: 01·新增支持销售虚拟产品自动发货 02.支持销售链接与卡密可导入导出 03.自定义后台路径对后台进行保护 04.新增支持商家缴纳保证金功能 05·违法或侵权商品一键举报功能 06·仲

下载
erl -sname node2@127.0.0.1 -setcookie my_secret_cookie

然后在一个节点里尝试连接另一个:

(node1@127.0.0.1)1> net_adm:ping(node2@127.0.0.1).
pong

这种方式简单直接,适合本地快速测试。

但如果项目复杂,或者需要模拟更真实的部署环境,我强烈推荐使用VSCode的Dev Containers(开发容器)功能。这玩意儿简直是神器。你可以定义一个

devcontainer.json
文件,里面指定一个Docker镜像(比如一个包含Erlang/OTP的Ubuntu镜像),然后VSCode会为你启动一个容器,把你的项目代码挂载进去,你所有的开发操作都在这个隔离的容器里进行。

举个例子,你的

.devcontainer/devcontainer.json
可能长这样:

{
  "name": "Erlang Distributed Dev",
  "build": {
    "dockerfile": "Dockerfile",
    "context": ".."
  },
  "extensions": [
    "pguyot.erlang"
  ],
  "forwardPorts": [8080, 8081], // 如果你的分布式服务有HTTP端口
  "postCreateCommand": "rebar3 compile",
  "remoteUser": "erlanguser"
}

对应的

Dockerfile
可能很简单:

FROM erlang:26

# Create a non-root user
ARG USERNAME=erlanguser
ARG USER_UID=1000
ARG USER_GID=$USER_UID
RUN groupadd --gid $USER_GID $USERNAME \
    && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \
    && apt-get update \
    && apt-get install -y --no-install-recommends git \
    && rm -rf /var/lib/apt/lists/*

USER $USERNAME
WORKDIR /home/$USERNAME/workspace

这样,每次打开项目,VSCode都会在一个干净、预配置好的Erlang环境里启动,并且可以轻松地启动多个容器实例来模拟不同的分布式节点。这对于调试和重现问题非常有帮助,也能保证团队成员开发环境的一致性。

Erlang开发中代码管理与构建工具的VSCode集成

在Erlang开发中,

rebar3
是事实上的构建工具和项目管理工具。VSCode与
rebar3
的集成非常顺畅。你可以在VSCode的集成终端中直接运行所有
rebar3
命令,比如
rebar3 compile
rebar3 shell
rebar3 edoc
等等。

我个人习惯的做法是,在VSCode中配置一些“任务”(Tasks),把常用的

rebar3
命令封装起来。比如,你可以定义一个任务来编译项目,另一个任务来启动
rebar3 shell
,甚至一个任务来运行测试。这样,你就可以通过快捷键或者命令面板快速执行这些操作,而不用每次都手动输入命令。

例如,在你的

.vscode/tasks.json
中可以这样配置:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Compile Erlang",
      "type": "shell",
      "command": "rebar3 compile",
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "presentation": {
        "reveal": "always"
      },
      "problemMatcher": []
    },
    {
      "label": "Start Erlang Shell",
      "type": "shell",
      "command": "rebar3 shell",
      "presentation": {
        "reveal": "always",
        "panel": "new"
      },
      "problemMatcher": []
    },
    {
      "label": "Run Erlang Tests",
      "type": "shell",
      "command": "rebar3 eunit",
      "presentation": {
        "reveal": "always"
      },
      "problemMatcher": []
    }
  ]
}

这样,你就可以通过“终端”->“运行任务...”来选择并执行这些预定义的

rebar3
操作。

至于代码管理,VSCode内置的Git支持已经非常强大,对于Erlang项目来说,这和任何其他语言的项目一样。你可以方便地进行版本控制、分支管理、提交、拉取和推送。对于大型的分布式系统,如果你的服务是分散在多个Git仓库中的,VSCode的“多根工作区”(Multi-root Workspaces)功能就能派上用场了。你可以把多个相关的项目文件夹添加到同一个VSCode工作区中,这样就能在一个窗口里管理和浏览所有相关的代码库,这对于理解整个分布式系统的架构和进行跨服务调试非常方便。

相关专题

更多
erlang语言是什么
erlang语言是什么

erlang是一种并发、容错、分布式和动态类型的编程语言。它专门用于构建并发系统,并提供了一个轻量级进程模型来实现并发性。想了解更多erlang的相关内容,可以阅读本专题下面的文章。

392

2024.06.19

什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

324

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

231

2023.10.07

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

411

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

532

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

309

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

74

2025.09.10

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6416

2023.06.30

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

61

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
go语言零基础开发内容管理系统
go语言零基础开发内容管理系统

共34课时 | 2.5万人学习

第二十三期_前端开发
第二十三期_前端开发

共98课时 | 7.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号