如何通过代码将JavaScript代码整合到myFunction函数中(无源码权限)
解决方案
因为无法直接访问源码,我们可以通过包装fs.writeFile方法自动收集所有写入逻辑,再整合到myFunction中:
- 拦截
fs.writeFile方法,记录每次调用的参数 - 定义
myFunction,统一执行收集到的所有写入操作
代码实现如下:
const fs = require('fs'); // 保存原始的writeFile方法 const originalWriteFile = fs.writeFile; // 存储所有写入操作的参数 const writeOperations = []; // 包装writeFile方法,自动收集调用参数 fs.writeFile = function(...args) { writeOperations.push([...args]); // 不影响原有脚本的执行逻辑 return originalWriteFile.apply(this, args); }; // 整合后的myFunction function myFunction() { // 按顺序执行所有收集到的写入操作 return Promise.all(writeOperations.map(([file, data, callback]) => { return new Promise((resolve, reject) => { fs.writeFile(file, data, (err) => { if (err) { reject(err); callback?.(err); return; } resolve(); callback?.(null); }); }); })); } // 模拟用户的两段写入脚本执行(原有脚本会自动被拦截收集) const data1 = "Learning how to write in a file."; fs.writeFile('Output.txt', data1, (err) => { if (err) throw err; }); const data2 = "Second content block to write."; fs.writeFile('Output.txt', data2, { flag: 'a' }, (err) => { if (err) throw err; }); // 调用myFunction执行所有整合后的写入逻辑 myFunction().then(() => { console.log("所有写入操作完成"); }).catch((err) => { console.error("写入失败:", err); });
补充说明
- 该方案无需修改原有源码,通过方法包装实现无侵入式的逻辑收集
- 如果需要合并写入同一份文件的内容,可以修改
myFunction,先将所有数据拼接后再执行单次写入操作
内容的提问来源于stack exchange,提问作者user20862193
相关产品推荐
相关产品推荐

