无法设置属性' size'即使模块已导出,也未定义

时间:2017-07-24 09:20:24

标签: javascript node.js

我是NodeJS开发的新手,我已经设置了Visual Studio Code来为节点应用程序开发JavaScript。

我正在关注Pluralsight的讲座,我们刚刚进入了关于Objects的部分。老师做的是制作两个脚本,dice.jsprogram.js并将它们放在同一个文件夹中。我做了同样的事。

他们看起来像这样:

dice.js:

var die = {
    size: 6,
    totalRolls: 0,
    roll: function() {
        this.totalRolls++;
        return Math.ceil(this.size * Math.random());
    }
};

exports.game = die;

program.js

var dice = require("./dice");
var die = dice.die;

die.size = 10;

console.log(die.roll());
console.log(die.roll());
console.log(die.roll());
console.log("Total rolls " + die.totalRolls);

console.log(die);

每当我尝试通过Visual Studio Code运行program.js文件时,它会告诉我该属性" size"未定义。如果我尝试使用点连接器,我会得到这个:

enter image description here

所以尺寸不在那里。教练程序工作得很好,但我这样做一直给我错误。我到处寻找,试着去理解可能出错的地方。我的猜测是我没有正确使用require()或其他东西。来自强类型编译语言,这对我来说非常困惑。

我错过了什么?

1 个答案:

答案 0 :(得分:3)

你导出一个叫做游戏的东西,但导入死亡,所以自然这不会起作用。

// dice.js
exports.game = die;
// program.js
var dice = require("./dice");
var die = dice.die; // <- this is wrong, change to .game:
var die = dice.game;