You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node REPL中require无法获取脚本最新内容的问题求助

Node.js REPL中require无法获取文件最新修改的问题解答

问题原因

Node.js的require机制默认会对已加载的模块进行缓存。第一次执行require('script.js')时,Node.js会读取磁盘文件、执行模块代码,并将模块相关信息存入require.cache对象中。后续再次调用require('script.js')时,Node.js会直接复用缓存里的结果,不会重新读取磁盘上修改后的文件,因此看不到更新后的内容。

解决方法

1. 清除指定模块缓存后重新加载

每次修改文件后,先删除该模块在缓存中的条目,再重新执行require:

// 删除script.js的缓存
delete require.cache[require.resolve('./script.js')];
// 重新加载最新文件
require('./script.js');

require.resolve('./script.js')会返回模块的绝对路径,这个路径就是require.cache中存储该模块的键,删除后再require就会重新读取磁盘上的最新内容。

2. 启动REPL时禁用全局模块缓存

如果需要在整个REPL会话中自动加载最新文件,可以启动REPL时添加--no-module-cache参数:

node --no-module-cache

注意:全局禁用缓存会降低模块加载性能,仅适合开发调试场景使用。

3. 直接读取并执行文件内容(替代方案)

绕开require的缓存机制,直接用文件系统模块读取文件内容并执行:

const fs = require('fs');
eval(fs.readFileSync('./script.js', 'utf8'));

这种方式每次都会读取最新的文件内容,但eval存在安全风险,仅建议在本地调试环境使用。

内容的提问来源于stack exchange,提问作者Livin Sunny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 00:04:55