可用 -r(或 --require)参数预加载模块,需将内容挂载到 global(CommonJS)或 globalThis(ESM),否则无法在 REPL 中直接访问;模块异常会导致 REPL 启动失败。

可以用 -r(或 --require)参数实现。它会在 Node.js 启动 REPL 前,先加载并执行指定模块,从而把模块里的逻辑、变量或函数注入到 REPL 的全局作用域中。
确保模块能挂载到全局
预加载的模块必须显式把需要暴露的内容挂到 global 对象上,否则在 REPL 中无法直接访问。
- 如果是 CommonJS 模块(
.js文件),用global.函数名 = ...或global.变量名 = ... - ES 模块(
.mjs或启用"type": "module")不能直接挂载到 global,需改用 CommonJS,或通过globalThis(注意兼容性) - 示例(
math.js):
global.double = (x) => x * 2;<br>global.PI = Math.PI;
然后运行:node -r ./math.js,进入 REPL 后就能直接调用 double(5) 或访问 PI。
避免常见错误
常见失败原因不是参数写错,而是模块导出方式不匹配 REPL 的加载机制:
-
export const foo = ...或module.exports = {...}都不会自动提升到全局 —— REPL 不会自动解构或导入它们 - 不要依赖
require()返回值,因为-r是强制加载,不返回引用 - 如果模块抛出异常,REPL 就启动失败,会看到报错而非进入交互界面
配合其他参数更灵活
预加载常和其它命令行选项组合使用:
-
node -r ts-node/register -r ./setup.js:先启用 TypeScript 支持,再加载自定义初始化脚本 -
node --experimental-repl-await -r ./env.js:开启顶层 await,并预设环境变量 -
node -r dotenv/config dotenv_config_path=.env -r ./log.js:加载环境变量后再初始化日志
验证是否生效
启动后,在 REPL 中输入 global 或 Object.keys(global).filter(k => !k.startsWith('_')),查看你挂载的属性是否存在;也可以直接尝试调用函数或访问变量,看是否报 ReferenceError。


















