Javascript 参数列表后的nodejs pdf2json(缺失)

Javascript 参数列表后的nodejs pdf2json(缺失),javascript,node.js,Javascript,Node.js,我是Javascript nodejs新手,我尝试使用hithub提供的modestry/pdf2json。但有一个错误显示缺失)语法错误,下面是代码和注释中的错误符号 let fs = require('fs'), PDFParser = require("./pdf2json/PDFParser"); let pdfParser = new PDFParser(); pdfParser.on("pdfParser_dataError", errData => console

我是Javascript nodejs新手,我尝试使用hithub提供的modestry/pdf2json。但有一个错误显示缺失)语法错误,下面是代码和注释中的错误符号

let fs = require('fs'),
    PDFParser = require("./pdf2json/PDFParser");

let pdfParser = new PDFParser();

pdfParser.on("pdfParser_dataError", errData => console.error(errData) );
    //Syntax error here missing ) at "errData"
pdfParser.on("pdfParser_dataReady", pdfData => {
    let pJSON = JSON.stringify({"formImage": pdfData.data});
    //Syntax error here missing ) at "pdfData"

    fs.writeFile("./pdf2json/test/F1040EZ.json", pJSON, (err) => {
        if(err) {
            console.error("parsing error: ", err);
        }
        else {
            console.log("parsing succeeded");
        }
    });
});

pdfParser.loadPDF("./pdf2json/test/pdf/fd/form/F1040EZ.pdf");

// or, call directly with buffer
fs.readFile(pdfFilePath, function (err, pdfBuffer) {
  if (!err) {
    pdfParser.parseBuffer(pdfBuffer);
  }
})
“=>”是什么意思?原因错误倾向于弹出带有此符号的行。

它是ES6标记:

param => { } 
同:

function (param) { }


以下代码在节点中工作:

"use strict"
let fs = require("fs"),
    PDFParser = require("pdf2json");

let pdfParser = new PDFParser();

pdfParser.on("pdfParser_dataError", errData => { 
    console.error(errData) 
});

pdfParser.on("pdfParser_dataReady", pdfData => {
    let pJSON = JSON.stringify({
        "formImage": pdfData.data
    });

    fs.writeFile("./pdf2json/test/F1040EZ.json", pJSON, err => {
        if (err) {
            console.error("parsing error:", err);
        } else {
            console.log("parsing succeeded");
        }
    });
});

pdfParser.loadPDF("./pdf2json/test/pdf/fd/form/F1040EZ.pdf");

您还可以尝试使用ES5版本的代码:(注意函数和
var
而不是
let


这是ES6中引入的箭头函数

根据,

与函数表达式相比,arrow函数表达式(也称为fat arrow函数)的语法更短,并且在词汇上绑定this值(不绑定自己的this、arguments、super或new.target)。箭头函数总是匿名的

(param1, param2, …, paramN) => { statements }
(param1, param2, …, paramN) => expression
         // equivalent to:  => { return expression; }

// Parentheses are optional when there's only one parameter:
(singleParam) => { statements }
singleParam => { statements }

// A function with no parameters requires parentheses or an underscore:
() => { statements }
_ => { statements }
你能告诉我你是如何执行这段代码的吗

更新:
在严格模式之外还不允许块作用域声明。因此,在脚本中使用严格模式。

这是OP所说的节点。你为什么说浏览器?还是有错误,是因为我的节点版本吗?节点v3.3.1节点JS v0.10.25确实严重过时。据我回忆,节点0.10有ES6的基本支持,也许正因为如此,您遇到了一些问题。让我为您创建一个ES5版本。实际上,我使用命令节点{filename}.js执行此命令
(param1, param2, …, paramN) => { statements }
(param1, param2, …, paramN) => expression
         // equivalent to:  => { return expression; }

// Parentheses are optional when there's only one parameter:
(singleParam) => { statements }
singleParam => { statements }

// A function with no parameters requires parentheses or an underscore:
() => { statements }
_ => { statements }