如何在config.js的Directory变量中插入文本?fs.writeSync位置写入存问题
问题解答
你想在config.js的Directory变量中修改文本完全可行,但当前用fs.writeSync固定位置写入的方法存在明显缺陷:
- 固定偏移量246完全依赖原文件的字符位置,一旦原文件的空格、注释等内容变动,这个位置就会失效
- 当写入的文本长度和原内容不同时,要么截断内容,要么覆盖后面的代码,直接导致config.js语法错误
推荐解决方案:读取+替换+重写
直接读取整个文件内容,用正则匹配并替换Directory的值,再重新写入整个文件,这是最稳妥且适配任何文本长度的方式:
const fs = require('fs'); // 获取命令行传入的新目录值,没有传入则不执行修改 const targetDir = process.argv[2]; if (!targetDir) { console.log('请传入要设置的目录值'); process.exit(1); } // 读取config.js完整内容 let configContent = fs.readFileSync('config.js', { encoding: 'utf8' }); // 正则匹配并替换Directory的取值 configContent = configContent.replace(/Directory: '([^']*)',/, `Directory: '${targetDir}',`); // 重新写入文件 fs.writeFileSync('config.js', configContent, { encoding: 'utf8' });
原方法问题核心
你之前的代码是从固定位置246覆盖字符,而非插入内容。当新文本长度和原insertText不同时:
- 新文本更长:会覆盖后面的
movie: 'test'等代码,直接破坏文件结构 - 新文本更短:原内容的剩余字符会残留,同样导致语法错误
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

