声明对象文字时出现意外标识符错误

时间:2017-08-21 22:08:15

标签: javascript node.js export

尝试完成一个简单的node.js练习,我尝试了几种变体。我怀疑我错过了一些非常简单的事情。

我创建var Calc的原因是因为我想导出'calculator'函数。

错误:

/Users/alex/zdev/react-project/calc.js:4
    var add = function(){
    ^^^

SyntaxError: Unexpected identifier

文件calc.js :(文件已经缩短以保持简洁)

var readline = require('readline-sync');

var Calc = {
        var add = function(){
                var num1 = readline.question("num1: ");
                var num2 = readline.question("num2: ");
                console.log(num1 + num2);
        };
}

module.export = Calc;

调用文件:

var calc = require('./calc');

var Calc = new calc.Calc();

Calc.add();
Calc.sub();
Calc.divide();

4 个答案:

答案 0 :(得分:2)

使用函数Calc定义新对象add,但语法不正确。正确的语法是:

var Calc = {
  add: function() {
    var num1 = readline.question("num1: ");
    var num2 = readline.question("num2: ");
    console.log(num1 + num2);
  }
};

答案 1 :(得分:0)

如果你想创建构造函数(我的意思是你的语法),你应该这样做:

function Calc() {
}

Calc.prototype.add = function() {
    var num1 = readline.question("num1: ");
    var num2 = readline.question("num2: ");
    console.log(num1 + num2);
};

module.exports = Calc;

然后将其导入为:

var Calc = require('./calc');

var calc = new Calc();

calc.add();
calc.sub();
calc.divide();

但我更喜欢你使用ES6类语法,Calc构造函数看起来像:

class Calc {
    constructor() {}

    add() {
        var num1 = readline.question("num1: ");
        var num2 = readline.question("num2: ");
        console.log(num1 + num2);
    }
}

module.exports = Calc;

答案 2 :(得分:0)

我建议使用JavaScript classes introduced in ECMAScript 2015

class Calculator {
  constructor() {
    console.log("[Calc] created!");
  }

  static add(a, b) {
    return a+b;
  }

}

let Calc = new Calculator();

答案 3 :(得分:0)

解决方案如下:

呼叫文件:

var calc = require('./calc');
var Calc = calc.Calc;
Calc.add();

calc文件:

var Calc = {
        add: function(){
                var num1 = readline.question("num1: ");
                var num2 = readline.question("num2: ");
                console.log(num1 + num2);
        },
        divide: function(){
                var num1 = readline.question("num1: ");
                var num2 = readline.question("num2: ");
                console.log(num1 / num2);
        },
        sub: function(){
                var num1 = readline.question("num1: ");
                var num2 = readline.question("num2: ");
                console.log(num1 - num2);
        }
}

module.exports = {Calc:Calc}

以下几行是原始错误所在:

从其他函数导入后定义我的类

Calc = calc.Calc;

使用逗号分隔我的对象属性而不是分号

},

未在模块导出中定义字典。 另外,我写'module.export'而不是'module.exports'原来是

module.exports = {Calc:Calc}

我忘了把我的parseInt()用于我的num1和num2值。