boxmoe_header_banner_img

Hello! 欢迎来到悠悠畅享网!

文章导读

SublimeText运行Erlang代码出错怎么办?配置Erlang环境的实用方法


avatar
作者 2025年9月6日 13

首先确认erlang环境变量配置正确,确保系统能识别erl命令;然后在sublime Text中创建自定义构建系统,配置包含"shell": true的JSON,正确调用erlc编译和erl运行命令,保存为Erlang.sublime-build;最后在Erlang文件中使用-module和-export定义main/0函数,选择对应构建系统并按下Ctrl+B运行。若仍报错,检查路径、语法、编码及权限问题。推荐使用Rebar3管理项目依赖与构建,提升开发效率。

SublimeText运行Erlang代码出错怎么办?配置Erlang环境的实用方法

Erlang代码在sublime text里跑不起来,通常不是Erlang本身的问题,而是Sublime Text没有正确地找到Erlang的执行环境,或者你的构建配置有误。最直接的解决办法是确保Erlang环境路径设置无误,并为Sublime Text配置一个能正确调用Erlang编译和运行命令的自定义构建系统。

解决方案

解决这个问题,我们需要从系统环境和Sublime Text配置两方面入手。

首先,确认Erlang环境已正确安装并可被系统识别。 打开你的命令行工具(windows的cmd或PowerShell,macos/linux的Terminal),输入

erl

并回车。如果Erlang成功启动,显示其版本信息并进入Erlang shell,那么说明Erlang本身安装没问题。如果提示“

erl

不是内部或外部命令,也不是可运行的程序或批处理文件”,那问题就出在系统环境变量上。

配置系统环境变量:

  • Windows:
    1. 找到你的Erlang安装目录,比如
      C:Program Fileserl-26.2

    2. 右键“此电脑” -> 属性 -> 高级系统设置 -> 环境变量。
    3. 在“系统变量”下,新建一个变量,变量名为
      ERLANG_HOME

      ,变量值为你的Erlang安装路径(例如

      C:Program Fileserl-26.2

      )。

    4. 找到
      Path

      变量,双击编辑,添加

      %ERLANG_HOME%bin

      。确保它在其他路径之前,或者至少能被系统找到。

    5. 保存所有更改,并重启你的电脑或至少重启命令行工具和Sublime Text,让环境变量生效。
  • macOS/Linux:
    1. Erlang通常通过Homebrew(macOS)或包管理器(Linux)安装,路径会自动配置。如果手动安装,你可能需要编辑
      ~/.bashrc

      ,

      ~/.zshrc

      ~/.profile

      文件。

    2. 添加类似
      export ERLANG_HOME="/usr/local/opt/erlang/lib/erlang"

      (Homebrew路径示例) 或你的安装路径。

    3. 然后添加
      export PATH="$ERLANG_HOME/bin:$PATH"

    4. 保存文件后,运行
      source ~/.bashrc

      (或对应的配置文件) 来刷新环境变量。

配置Sublime Text构建系统: 这是让Sublime Text知道如何运行Erlang代码的关键一步。

  1. 打开Sublime Text。

  2. 点击

    Tools

    ->

    Build System

    ->

    New Build System...

  3. Sublime Text会打开一个名为

    untitled.sublime-build

    的新文件。将以下json配置粘贴进去:

    {     "cmd": ["erlc", "$file", "&&", "erl", "-noshell", "-s", "${file_base_name}", "main", "-s", "init", "stop"],     "file_regex": "^(.*?):([0-9]+):([0-9]+): (.*)$",     "selector": "source.erlang",     "shell": true,     "working_dir": "$file_path" }
    • 解释一下这个配置:
      • cmd

        : 这是执行的命令。它首先调用

        erlc

        编译当前打开的Erlang文件(

        $file

        ),然后使用

        &&

        (在shell模式下)连接另一个命令,即

        erl

        来运行编译后的模块。

        -noshell

        表示不进入Erlang shell,

        -s ${file_base_name} main

        表示调用当前模块(文件名不带扩展名)的

        main/0

        函数,

        -s init stop

        则是在执行完毕后安全退出Erlang运行时。

      • file_regex

        : 用于捕获编译错误信息的正则表达式,让Sublime Text能高亮错误行。

      • selector

        : 指定这个构建系统适用于Erlang文件(通常是

        .erl

        )。

      • shell: true

        : 非常关键,它告诉Sublime Text通过系统的shell来执行

        cmd

        命令。这样

        &&

        操作符才能正常工作,尤其是在Windows上。

      • working_dir

        : 将工作目录设置为当前文件的路径,这样Erlang就能找到同目录下的其他模块。

  4. 将这个文件保存为

    Erlang.sublime-build

    (或者你喜欢的任何名字,但建议保持

    .sublime-build

    后缀),保存在Sublime Text默认的User目录下。

  5. 现在,打开一个Erlang文件(比如

    hello.erl

    ,内容如下:

    -module(hello). -export([main/0]). main() -> io:format("Hello from Erlang in Sublime Text!~n").

    )。

  6. 点击

    Tools

    ->

    Build System

    ,选择你刚刚创建的

    Erlang

    构建系统。

  7. 按下

    Ctrl+B

    (Windows/Linux) 或

    Cmd+B

    (macOS) 运行代码。你应该能在Sublime Text底部的输出面板看到“Hello from Erlang in Sublime Text!”。

如果你的Erlang代码没有

main/0

函数,或者你只是想编译,可以简化

cmd

命令,例如只保留

"cmd": ["erlc", "$file"]

为什么我的Erlang代码在Sublime Text里运行总是报错?常见错误分析

说实话,我个人遇到过好几次,就是因为PATH没设对,或者Sublime Text压根不知道要去哪里找

erl

这个命令。这大概是90%的问题来源。但除了这个,还有一些其他常见的坑:

  1. erl

    erlc

    命令未找到 (Command Not Found):这通常就是上面提到的环境变量问题。系统找不到Erlang的执行文件,Sublime Text自然也无从调用。检查

    Path

    变量,确保

    ERLANG_HOME/bin

    (或等效路径)确实存在且可访问。

  2. Erlang代码本身的语法错误或运行时错误:即使环境配置正确,如果你的
    .erl

    文件有语法错误,

    erlc

    编译时就会报错。比如忘记了句号(

    .

    )结尾,或者变量名大小写不对。运行时错误则可能是函数调用不存在、模块未加载等。这些错误信息通常会显示在Sublime Text的构建输出面板中,仔细阅读它们能帮你定位问题。

  3. Sublime Text构建系统配置错误
    • shell: true

      漏掉了:如果你在

      cmd

      里使用了像

      &&

      这样的shell特定操作符,但没有设置

      "shell": true

      ,那么命令会执行失败。Sublime Text会尝试直接运行整个字符串,而不是通过shell。

    • cmd

      命令写错:比如

      erlc

      拼写错误,或者调用Erlang运行时参数不对。

    • selector

      不匹配:如果

      selector

      设置不正确,Sublime Text可能不会自动为Erlang文件选择你的构建系统。不过通常

      source.erlang

      是正确的。

  4. 文件编码问题:虽然Erlang对UTF-8支持良好,但偶尔一些老旧的系统或特殊字符可能导致编码问题。确保你的Erlang源文件以UTF-8编码保存。
  5. 权限问题:在极少数情况下,如果你的Erlang安装目录或项目目录的权限设置不当,可能导致
    erl

    erlc

    无法读取或写入文件。这在Linux系统上比较常见。

遇到错误时,最重要的是不要慌,一步步排查。先确认Erlang本身在命令行能跑,再看Sublime Text的配置,最后才是检查代码逻辑。

SublimeText运行Erlang代码出错怎么办?配置Erlang环境的实用方法

Build AI

为您的业务构建自己的AI应用程序。不需要任何技术技能。

SublimeText运行Erlang代码出错怎么办?配置Erlang环境的实用方法20

查看详情 SublimeText运行Erlang代码出错怎么办?配置Erlang环境的实用方法

除了Sublime Text,还有哪些主流ide或编辑器适合开发Erlang?

我个人觉得,如果你是Erlang的重度用户,或者项目比较复杂,IntelliJ idea配合其Erlang插件是真的香。但如果只是写写小工具或者脚本,VS Code的轻量和插件生态则更胜一筹。

  1. intellij idea (搭配Erlang插件)

    • 优点:功能强大,提供一流的代码补全、重构、导航、调试和错误检查。对于大型Erlang项目,它的项目结构管理和依赖解析能力非常出色。插件社区活跃,可以获得很多高级功能。
    • 缺点:资源占用相对较高,启动速度不如轻量级编辑器。对于习惯了vim/emacs的开发者来说,可能觉得它过于“臃肿”。
    • 适用场景:企业级Erlang开发,复杂的分布式系统,需要深度IDE支持的团队。
  2. visual studio Code (VS Code) (搭配Erlang/Elixir插件)

    • 优点:轻量级、启动快,拥有庞大的插件生态系统。通过安装Erlang或Elixir(因为两者语法相似,很多插件同时支持)插件,可以获得语法高亮、代码片段、基本代码补全、格式化等功能。调试功能也逐渐完善。
    • 缺点:核心功能相对IDE来说仍有差距,例如重构能力不如IntelliJ IDEA。性能在大项目下可能不如专用IDE。
    • 适用场景:个人项目、脚本编写、中小型Erlang项目,以及喜欢高度定制化和轻量级体验的开发者。
  3. Emacs (搭配Erlang Mode)

    • 优点:对于Emacs老用户来说,Erlang Mode提供了非常强大的功能,包括代码导航、交互式shell(
      erl

      )、编译、调试等。高度可定制,可以根据个人习惯打造极致的开发环境。

    • 缺点:学习曲线非常陡峭,对于新手来说门槛很高。
    • 适用场景:Emacs资深用户,追求极致效率和键盘操作的开发者。
  4. Vim (搭配Erlang插件)

    • 优点:与Emacs类似,Vim用户可以通过各种插件(如
      vim-erlang

      )获得Erlang开发支持。轻量级,启动快,远程开发友好。

    • 缺点:同样学习曲线陡峭,依赖插件生态,配置起来需要一定时间和精力。
    • 适用场景:Vim资深用户,服务器端开发,远程ssh环境。

选择哪个工具,很大程度上取决于你的个人喜好、项目规模和团队协作习惯。没有绝对最好的,只有最适合你的。

如何更高效地管理Erlang项目依赖和构建?Rebar3的引入

说实话,刚开始学Erlang的时候,我也是手动

erlc

erl

去的,但一旦项目里有依赖,或者文件一多,那简直是噩梦。Rebar3简直是救星。

对于任何稍具规模的Erlang项目,手动管理编译、测试和依赖是不可持续的。这时候,你就需要像Java世界的maven/gradlenode.js世界的npm一样的构建工具——Rebar3

Rebar3是什么? Rebar3是一个功能强大的Erlang构建工具和依赖管理器。它遵循Erlang/OTP的约定,旨在简化Erlang应用程序、库和发布版本的生命周期管理。它可以帮你:

  • 创建新的Erlang项目骨架。
  • 声明和下载外部依赖。
  • 编译Erlang代码和C/C++ NIFs。
  • 运行测试(EUnit、Common Test)。
  • 生成文档。
  • 创建可部署的发布版本(release)。
  • 运行Erlang shell,加载项目代码和依赖。

Rebar3的核心功能和使用:

  1. 项目创建: 你可以用

    rebar3 new app my_app

    创建一个新的Erlang应用程序项目,或者

    rebar3 new lib my_lib

    创建一个库。这会自动生成一个符合OTP约定的项目结构,包括

    src

    ebin

    等目录,以及一个

    rebar.config

    文件。

  2. 依赖管理: 在

    rebar.config

    文件中,你可以声明项目的外部依赖。Rebar3会负责从Hex.pm(Erlang/Elixir的包管理器)或其他git仓库下载、编译这些依赖。

    %% rebar.config 示例 {deps, [     {cowboy, {git, "https://github.com/ninenines/cowboy.git", {tag, "2.9.0"}}},     {jsx, "~> 3.0"} %% 从Hex.pm获取 ]}.

    然后运行

    rebar3 deps

    来下载和编译依赖。

  3. 编译项目: 在项目根目录运行

    rebar3 compile

    ,Rebar3会根据

    rebar.config

    的配置,编译你的项目代码和所有依赖。它会自动处理模块之间的依赖关系,确保编译顺序正确。

  4. 运行测试: Rebar3内置了对EUnit和Common Test的支持。只需运行

    rebar3 eunit

    rebar3 ct

    即可执行项目的测试。

  5. 创建发布版本 (Release): 这是Rebar3最强大的功能之一。你可以用

    rebar3 release

    命令创建一个包含Erlang运行时、你的应用程序代码和所有依赖的可部署包。这个包可以在没有Erlang安装的机器上直接运行,非常适合部署。

  6. 交互式Shell: 运行

    rebar3 shell

    会启动一个Erlang shell,并且会自动加载你的项目代码和所有依赖,让你可以在一个完整的项目环境中进行交互式开发和调试。

Rebar3与Sublime Text的结合: 你甚至可以为Sublime Text配置一个构建系统,让它直接调用Rebar3命令,比如:

{     "cmd": ["rebar3", "compile"],     "selector": "source.erlang",     "working_dir": "$project_path" // 或者 "$file_path" }

这样,你就可以在Sublime Text里一键编译整个Rebar3项目了。当然,更高级的用法可能是在终端直接使用Rebar3,因为它提供了更丰富的命令和反馈。

引入Rebar3,不仅让Erlang项目的构建和管理变得有条不紊,也极大地提升了开发效率和团队协作的便利性。它是Erlang生态中不可或缺的工具。



评论(已关闭)

评论已关闭