Node.js调用writeParams时报TypeError [ERR_INVALID_ARG_TYPE]原因是什么
错误原因
你调用writeParams函数时传入的参数是undefined,JSON.stringify处理undefined时会直接返回undefined,而fs.writeFileSync的第二个参数要求必须是字符串、Buffer、TypedArray或DataView类型,传入undefined就触发了本次类型错误。
排查步骤
- 打开你的
E:\TB\JS\index.js文件,定位到第85行,也就是错误栈里标注的Timeout.main函数调用writeParams的位置,打印你传入writeParams的参数,确认参数是否为undefined。 - 检查这个参数的生成逻辑:常见原因包括异步操作未完成就提前调用了
writeParams、参数赋值逻辑有分支遗漏导致没完成赋值、读取上游数据失败没有捕获异常。
修复方案
你可以选择任意一种方式修复:
- 调用侧修复:确保调用
writeParams时传入的参数是合法的非undefined值,参数异常时先做异常处理再调用写文件函数。 - 函数侧加兜底校验:修改
writeParams函数,增加参数校验和默认值兜底,示例代码如下:
function writeParams(data) { // 空值兜底,传入undefined时默认写空对象,你也可以根据业务需求改成其他默认值 const validData = data ?? {} console.log("Writing params.json file. . .", validData); // 可选:JSON.stringify加后两个参数,让写入的json文件格式化,方便查看 return fs.writeFileSync(paramsPath, JSON.stringify(validData, null, 2)) }
内容的提问来源于stack exchange,提问作者kudos
相关产品推荐
相关产品推荐

