0

0

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

星夢妙者

星夢妙者

发布时间:2025-09-05 21:09:01

|

945人浏览过

|

来源于php中文网

原创

首先确认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 Files\erl-26.2
    2. 右键“此电脑” -> 属性 -> 高级系统设置 -> 环境变量。
    3. 在“系统变量”下,新建一个变量,变量名为
      ERLANG_HOME
      ,变量值为你的Erlang安装路径(例如
      C:\Program Files\erl-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的配置,最后才是检查代码逻辑。

一帧秒创
一帧秒创

基于秒创AIGC引擎的AI内容生成平台,图文转视频,无需剪辑,一键成片,零门槛创作视频。

下载

除了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/Gradle、Node.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
    include
    等目录,以及一个
    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生态中不可或缺的工具。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

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

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

409

2024.06.19

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

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

405

2023.08.11

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

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

251

2023.10.07

json数据格式
json数据格式

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

455

2023.08.07

json是什么
json是什么

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

546

2023.08.23

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

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

334

2023.10.13

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

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

82

2025.09.10

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

530

2023.06.20

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.5万人学习

Git 教程
Git 教程

共21课时 | 4.1万人学习

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

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