Node.js读取行:意外的标记=>

bweufnob  于 2022-12-12  发布在  Node.js
关注(0)|答案(5)|浏览(143)

我正在学习node.js,需要在一个项目中使用readline。我有直接来自readline module example的以下代码。

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question('What do you think of Node.js? ', (answer) => {
  // TODO: Log the answer in a database
  console.log('Thank you for your valuable feedback:', answer);

  rl.close();
});

但是当我通过node try.js命令运行代码时,它一直发出如下错误:

rl.question('What is your favorite food?', (answer) => {
                                                    ^^
SyntaxError: Unexpected token =>
    at exports.runInThisContext (vm.js:73:16)
    at Module._compile (module.js:443:25)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3
hyrbngr7

hyrbngr71#

Arrow functionsECMAScript 6 standard的新特性之一,仅在version 4.0.0中引入node.js(作为稳定特性)。
您可以升级node.js版本或使用旧语法,如下所示:

rl.question('What do you think of Node.js? ', function(answer) {
  // TODO: Log the answer in a database
  console.log('Thank you for your valuable feedback:', answer);

  rl.close();
});

(Note这两种语法之间还有一个区别:变量this的行为不同。在本例中这并不重要,但在其他情况下可能会发生这种情况。)

ki0zmccv

ki0zmccv2#

升级节点版本。
箭头函数现在可在节点(版本4.0.0)中使用,请参见此处:ECMAScript 2015 (ES6) in Node.js
检查node -v运行的版本
您可能需要升级,请查看此处的兼容性表,了解其他可用的兼容性:
Node Compatibility Table

bvuwiixz

bvuwiixz3#

对于已升级节点并遇到相同错误的用户:对我来说,这个错误来自eslint。我在我的package.json中使用 node 14

"engines": {
    "node": "14"
  },

但只有在将linter .eslintrc.js配置更新为以下内容后才能消 debugging 误:

"parserOptions": {
    "ecmaVersion": 8,
    "ecmaFeatures": {
      "experimentalObjectRestSpread": true,
      "jsx": true,
    },
    "sourceType": "module",
  },
b4qexyjb

b4qexyjb4#

=>语法称为Arrow Function,是JavaScript的一个相对较新的特性,您需要一个类似的新版本Node来使用它。

v09wglhw

v09wglhw5#

将“es”版本从6更改为7。为此,请转到您的函数**〉**.eslintrc.js文件。
更改"es6:true" to "es7:true"

实际上,“=〉”是es7的一个元素,因此在es6上抛出错误。

相关问题