Node.js:在文本文件中的特定行之后插入一行

Node.js: Inserting a line after a particular line in a text file?

本文关键字:插入 之后 一行 js 文本 文件 Node      更新时间:2023-09-26

我试图构建一个命令行应用程序,这样就不需要更新conf文件来阻止ip(或任何东西)。为此,我需要在conf文件的特定位置插入一行带有ip的特定代码。我知道CLI部分。有人能帮我插入零件吗?我写的代码如下,但写得有些胡言乱语!!

#!/usr/bin/env node
var cli = require('cli');
var fs = require('fs');
cli.parse({
    block:   ['b', 'Block the ip:port'],
    ip: ['i', 'provide ip address', 'string', ''],
    port: ['p', 'provide port number', 'int', 0],
});
cli.main(function(args, options)
{
    if(options.block)
    {
       fs.readFile('nginx.conf', function(err, data) {
          if(err) throw err;
          data = data.toString();
          var array = data.toString().split("'r'n");
          array[4] ='deny ' + cli.getValue(options.ip) + ':' + cli.getValue(options.port);
          for(i = 0; i < array.length ; i++) {
            fs.writeFile('nginx1.conf', array[i]+''r'n', function () {})
          };
       });
    }
});

回调循环不是一个好主意。试试这个代码-

fs.readFile('nginx.conf', function(err, data) {
  if(err) throw err;
  //data = data.toString();
  var array = data.toString().split("'n");
  array[4] ='deny '+cli.getValue(options.ip)+':'+cli.getValue(options.port);
  for(i=0;i<array.length;i++) {
    fs.appendFileSync('nginx1.conf', array[i]+''n');
  }
});