SyntaxError:意外令牌:将文件内容与字符串连接,然后用terser缩小时,eof未定义

问题描述

我正在尝试读取文件并将文件内容保存到变量。然后,我想使用该变量并将其连接起来,并以其他方式对其进行解析,然后使用terser对其进行最小化,但我不断收到错误消息:

(node:13708)UnhandledPromiseRejectionWarning:SyntaxError:Unexpected token:eof(undefined)

当我删除此行时,它会起作用:

fileContents = 'String.prototype.hexDecode = function(){var j;var hexes = this.match(/.{1,4}/g) || [];var back = "";for(j = 0; j<hexes.length; j++) {back += String.fromCharCode(parseInt(hexes[j],16));}return back;}' + fileContents;

但是,删除该字符串的问题是我将无法修改所需的字符串。我还需要在整个程序中多次执行此操作,然后我要最小化并将已解析的完整输出写入文件。这是相关的代码

var input = "input.txt";
function write(data) {
  if (!(output == undefined)) {
    fs.writeFile(output,data,(err) => {
      if (err) console.log(err);
    });
  }
}

async function mini() {

  var { minify } = require("terser");
  var fileContents = fs.readFileSync(input).toString();
  fileContents = 'String.prototype.hexDecode = function(){var j;var hexes = this.match(/.{1,16));}return back;}' + fileContents;


  var result = await minify(fileContents,{ sourceMap: true });
  //write(fileContents);
  write(result.code)

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)