不能。sublime text 仅为编辑器,无运行时、协程调度或事件循环;高并发需 luajit + luarocks 模块(如 copas、luasocket),且构建系统须用 ["luarocks", "exec", "lua", "$file"] 调用以注入模块路径。

Sublime Text 能不能直接跑高并发 Lua 脚本
不能。Sublime Text 本身是纯编辑器,不提供运行时环境、协程调度或网络事件循环;所谓“高并发”必须依赖 Lua 解释器(如 luajit)+ 第三方库(如 lua-resty-core、lapis 或 luasocket + copas),而 Sublime 只能调用它们——前提是这些库已通过 luarocks 正确安装,且解释器能加载。
为什么装了 luarocks 还是 require 失败
常见现象:module 'resty.core' not found 或 no field package.preload['socket']。这不是 Sublime 配置问题,而是 luarocks 安装路径未被 Lua 解释器识别。
-
luarocks install luasocket默认装到用户目录(如~/.luarocks/share/lua/5.4/),但系统lua不会自动查这个路径 - 验证方式:在终端执行
lua -e "print(package.path)",看输出是否包含luarocks的 share 路径;若没有,需手动追加 - Windows 下尤其容易错:LuaForWindows 自带的
lua.exe通常只认C:\Lua\share\lua\5.1\?.lua,而luarocks装的是5.4目录,版本不匹配就直接报错 - 临时解决:在脚本开头加
package.path = package.path .. ';C:/Users/xxx/.luarocks/share/lua/5.4/?.lua'(路径按实际调整)
Sublime 构建系统怎么调用 luarocks 安装的模块
关键不是改 Sublime,而是让 lua 命令本身能加载 rocks。构建系统只是透传命令,它不干预 Lua 的 package.path。
- 最稳做法:用
luarocks exec lua "$file"替代lua "$file"——luarocks exec会自动注入所有 rocks 路径 - 对应
Lua.sublime-build的"cmd"字段应写成:["luarocks", "exec", "lua", "$file"] - macOS/Linux 用户注意:
luarocks命令可能不在 PATH(尤其用brew install luarocks后),可用which luarocks确认,必要时写绝对路径,如["/opt/homebrew/bin/luarocks", "exec", "lua", "$file"] - Windows 用户若用 LuaForWindows,其自带
luarocks通常在C:\Lua\luarocks\,需确保该目录也在系统 PATH 中
调试高并发脚本时 Sublime 输出面板卡死怎么办
因为 Sublime 构建面板不是交互式终端:遇到 io.read()、阻塞 socket 接收、或长时间运行的 while true do ... end,输出会挂起,Ctrl+B 无响应,甚至整个面板冻结。
- 别在脚本里写
io.read()或os.execute("pause")—— 这类 Windows 习惯在 Sublime 里无效 - 高并发逻辑(如
copas.loop()或nginx事件循环)必须配合真实终端调试;Sublime 只适合验证语法、单元逻辑、短生命周期脚本 - 若坚持用 Sublime 查错,把主循环拆成单次迭代 +
print日志,用Ctrl+B触发一次执行观察输出 - 真正调试建议:用
ZeroBrane Studio远程 attach 到luajit进程,或直接在终端跑luajit -debug your_script.lua
luarocks 安装路径是否被当前 lua 实例识别,以及构建命令有没有用 luarocks exec 做环境桥接。











