Atom script插件默认不继承终端环境变量,易报“Cannot find module”等错;必须手动启用终端模式(Ctrl+I/Cmd+I)或勾选Use Terminal设置,否则input()卡死、路径错乱、中文乱码频发。

Atom 本身不带代码执行能力,所谓“测试代码片段”全靠 script 插件实现,但默认行为极易出错——不是报错找不到模块,就是输入卡死、路径错乱、环境变量丢失。核心问题就一个:它不自动继承你终端里已配好的环境。
script 插件必须手动启用终端模式才能交互式运行
直接按 Ctrl+Shift+B(Windows/Linux)或 Cmd+I(macOS)运行,script 默认走的是非终端管道,Python/Node 的 input()、raw_input() 或 readline 全部被吞掉,光标卡住没反应。
- 每次运行前先按
Ctrl+I(Win/Linux)或Cmd+I(macOS),强制切到内置终端执行 - 或者进
Settings → Packages → script → Settings,勾选Use Terminal(注意不是Use Script Panel) - 启用后终端窗口复用,不会反复弹窗,但也要记得手动
clear或cd到正确路径,否则上一次的cd会残留影响下一次执行
环境变量不继承是 Cannot find module 错误的根源
你在系统终端里能跑 node index.js 或 python -m http.server,但在 script 里却报 Cannot find module 'xxx' 或 No module named 'requests'——这不是插件坏了,是它根本没拿到你的 shell 环境变量(比如 PATH、PYTHONPATH、NODE_ENV)。
- Mac/Linux 用户检查
~/.zshrc或~/.bash_profile里是否把export PATH=...写在了最后;script只读取登录 shell 的初始环境,不 source 后续配置 - Windows 用户确认 Atom 是从命令行启动的(比如在 PowerShell 里敲
atom .),否则它拿不到你设置的系统级PATH - 临时解法:在脚本开头加一行显式调用解释器,比如
#!/usr/local/bin/node或#!/opt/homebrew/bin/python3,绕过PATH查找
不同语言对 script 插件的响应差异很大
script 不是万能执行器,它靠文件后缀匹配命令,但匹配逻辑简单粗暴,很多边界情况要手动干预。
- Python:默认用
python命令,如果你装了python3但没设软链接,就报command not found;可在script设置里改Command to Run为python3 - JavaScript:对
.js文件默认走node,但若文件里有import语法且没配type: "module",直接报错;建议用.mjs后缀或加"type": "module"到package.json - Bash/Shell:
.sh文件需有可执行权限(chmod +x),否则提示Permission denied;Windows 上得用bash子系统或 Git Bash 才能跑
别信快捷键,优先看右下角语法标识和文件路径
script 的执行行为高度依赖当前文件的语法类型和保存状态,不是“按了就一定跑”。常见静默失败原因都在编辑器状态里。
- 右下角显示
Plain Text?那script根本不会尝试运行——必须点它改成JavaScript、Python、Shell Script等对应类型 - 文件没保存(标题栏带 *)?
script会拒绝执行,提示File not saved,哪怕只是改了个空格 - 文件路径含中文或空格?某些旧版
script会解析失败,报spawn ENOENT;建议项目路径全用英文、无空格
真正麻烦的从来不是“怎么跑起来”,而是“为什么跑出来的结果和终端里不一样”。环境隔离、路径残留、语法识别偏差——这三个点漏查一个,调试时间就翻倍。别跳过 Ctrl+I 那一下,也别忽略右下角那个小小的语言标识。

















