Nodejs从其他文件引用类对象

时间:2017-07-20 15:21:22

标签: javascript node.js alexa alexa-skills-kit

我正在学习nodejs,我想知道如何引用在其他文件中创建的对象

例如: 我有一个我的班级 user.js 的文件,我正在导出

module.exports = class Username {

  constructor(name, lastProjects) {
    this.current.name = name;
    this.current.lastProjects = lastProjects;
  }

};

name.handler.js 我无法将其导出为oder文件

const Alexa = require('alexa-sdk');
const User = require('../models/user.model');
module.exports = Alexa.CreateStateHandler(StatesConst.NAME, {
  'NewSession': function () {
    this.emit('NewSession'); // Uses the handler in newSessionHandlers
  },
  'MyNameIsIntent': function() {
    var user = new User.Username("Anna", ["project1", "project2"]);
    this.emit(':ask', "Hi "+User.Username.name);
    }
    }

user.handler.js 我完全不知道如何编写对新创建对象的引用用户名

const Alexa = require('alexa-sdk');
const User = require('../models/user.model');
module.exports = Alexa.CreateStateHandler(StatesConst.NEWSTATE, {
  'NewSession': function () {
    this.emit('NewSession'); // Uses the handler in newSessionHandlers
  },
  'MyUserIntent': function() {
    this.emit(':ask', "My username is "+User.Username.name);
    }
    }

如何在程序中的其他文件中引用新用户对象?我希望每次我的用户启动一个程序时我都会得到一个新的用户对象,我可以在每个其他文件中引用和更改属性。我非常感谢你的帮助:)

2 个答案:

答案 0 :(得分:0)

    module.exports = Username;




const Alexa = require('alexa-sdk'); // ok?
const User =  // in linux, to go 1 dir up is just '.'
console.log(require('../models/user.model'))

看看你是否收到消息='[功能:用户名]'“。

如果没有,你会看到一条消息告诉你一些事情。也许找不到文件。

答案 1 :(得分:0)

由于您要将Username分配给module.exports,因此需要在处理程序中将其用作new User。例如, name.handler.js 将变为:

const Alexa = require('alexa-sdk');
const User = require('../models/user.model');
module.exports = Alexa.CreateStateHandler(StatesConst.NAME, {
    'NewSession': function () {
        this.emit('NewSession'); // Uses the handler in newSessionHandlers
    },
    'MyNameIsIntent': function() {
        var user = new User("Anna", ["project1", "project2"]);
        this.emit(':ask', "Hi "+user.name);
    }
}

请注意,在this.emit行中,您应该使用User的实例,而不是类本身。 (所以user代替User)。

此外,在 user.handler.js 文件中,您不会实例化任何User。您将获得Cannot read property 'name' of undefined

最后,如果您的Username课程位于 user.js ,则您的require语句应该看起来像require('../models/user'),而不是require('../models/user-model')