如何使用fs.writeFileSync将.js格式文件写入指定路径?
解决方法:用
fs.writeFileSync写入JS文件或复制JS文件 嘿,这个问题其实很好处理,咱们分两种常见情况来聊:
情况1:abc已经是JS文件的内容(字符串/Buffer)
你之前写JSON的时候用JSON.stringify()是因为abc是JS对象,需要转成JSON格式的字符串才能写入文件。但如果abc本身就是JS文件的内容(比如你已经读取了某个.js文件的字符串,或者手动编写的JS代码字符串),那直接用fs.writeFileSync写入就行,完全不需要额外转换:
- 如果abc是字符串:
// 比如abc是这样的:const foo = "bar"; fs.writeFileSync(tempPath, abc, "utf8");
- 如果abc是Buffer(比如从其他文件读取的二进制内容):
// 比如用fs.readFileSync读取了某个.js文件得到Buffer fs.writeFileSync(tempPath, abc); // 不需要指定编码,Buffer直接写入
情况2:abc是一个已存在的.js文件的路径
如果你想把已有的某个.js文件复制到tempPath,那用fs.copyFileSync会更高效(底层是直接复制文件,不用先读入内存再写入):
fs.copyFileSync(abc, tempPath);
当然你也可以用“先读再写”的方式,逻辑和上面一致:
// 先读取原JS文件的内容 const jsContent = fs.readFileSync(abc, "utf8"); // 再写入目标路径 fs.writeFileSync(tempPath, jsContent, "utf8");
本质上,.js文件就是普通的文本文件,和JSON文件的区别只是内容格式不同——JSON需要把JS对象转成字符串,而JS文件内容本身就是字符串/二进制数据,直接写入即可。
内容的提问来源于stack exchange,提问作者user3614821
相关产品推荐
相关产品推荐

