.load命令仅逐行执行文件内容,不注入变量到REPL全局作用域;需显式挂载到global、用require加载CommonJS模块或await import()动态导入ES模块才能在REPL中访问。

Node.js REPL 不支持直接用 .load 命令加载外部 JavaScript 文件并将其变量/函数注入当前作用域。
为什么 .load 不能“注入”变量到 REPL 上下文
.load 命令只是将文件内容**逐行读取并执行**,但它运行在独立的沙箱式环境中(类似 vm.runInThisContext),不会自动将声明的变量、函数或模块导出绑定到 REPL 的全局作用域(global)或本地上下文。因此即使文件里写了 const x = 42;,执行后在 REPL 中输入 x 仍会报 ReferenceError。
真正可行的替代方案
要让外部 JS 文件的定义在 REPL 中可用,需主动暴露或挂载:
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
-
方式一:显式挂载到 global(简单脚本适用)
在 JS 文件中写:global.myFunc = () => console.log('hello');,再用.load myfile.js,之后就能直接调用myFunc()。 -
方式二:用 require 加载 CommonJS 模块
把逻辑封装为module.exports,例如utils.js写module.exports = { add: (a,b) => a+b };,然后在 REPL 中执行const utils = require('./utils.js');,再用utils.add(1,2)。 -
方式三:动态导入 ES 模块(Node ≥14,启用 --experimental-repl-await)
启动 REPL 时加参数:node --experimental-repl-await,然后执行:const { something } = await import('./mymodule.js');(注意路径必须带扩展名和 ./)。
小技巧:快速重载模块
REPL 中多次 require 同一文件会命中缓存。如需重新加载,可先清除:delete require.cache[require.resolve('./myfile.js')];,再 require('./myfile.js')。
不复杂但容易忽略:.load 是“执行”,不是“导入”。想用变量,得自己导出或挂载。

















