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

如何通过npm脚本重命名文件?使用copyfiles及fs.rename遇报错

解决copyfiles复制后重命名的报错问题

我来帮你搞定这个问题!首先咱们先拆解你遇到的错误:

你用node -e require('fs').rename(...)时触发了ERR_INVALID_CALLBACK,这是因为**fs.rename是Node.js的异步API,它强制要求传入一个回调函数**,你没传回调参数,所以Node.js抛出了这个错误。

解决方案1:使用同步版本fs.renameSync(推荐)

同步版本的renameSync不需要回调函数,非常适合在npm脚本里使用,修改起来也简单:

首先先修正你脚本里的笔误——你复制的是conf.dev.json,但rename命令里写的是conf.prod.json,得改成一致的,然后把rename替换成renameSync:

"scripts": {
  "copy": "copyfiles -u 2 /src/app/conf.dev.json dist/config/ && node -e \"require('fs').renameSync('dist/config/conf.dev.json','dist/config/conf.json')\""
}

这里注意用双引号包裹node -e后面的代码,避免shell解析时出现语法问题。

解决方案2:给异步fs.rename补全回调函数

如果你一定要用异步版本,必须补上回调函数来处理错误,修改后的命令如下:

"scripts": {
  "copy": "copyfiles -u 2 /src/app/conf.dev.json dist/config/ && node -e \"require('fs').rename('dist/config/conf.dev.json','dist/config/conf.json', (err) => { if (err) { console.error('重命名失败:', err); process.exit(1); } })\""
}

这个版本会在重命名失败时打印错误信息并退出脚本,保证流程的可靠性。

验证效果

修改完脚本后执行npm run copy,现在应该能成功把conf.dev.json复制到dist/config/目录下,并自动重命名为conf.json,不会再出现回调相关的报错啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:15:08