2017-07-20 33 views
0

我现在的学习和的NodeJS我想知道我怎么可以参考一个其他的文件参考的NodeJS类对象和其他文件

例如创建的对象: 我有一个文件,我的课用户。 JS其中我出口

module.exports = class Username { 

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

}; 

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.Username("Anna", ["project1", "project2"]); 
    this.emit(':ask', "Hi "+User.Username.name); 
    } 
    } 

user.handler.js我tottaly不知道我怎么能写我的PROGRAMM到我的新创建的对象的用户名参考

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); 
    } 
    } 

我怎么可以参考新的用户对象的其他文件?我希望每次我的用户启动一个程序时,我都会得到一个新的用户对象,并且我可以在每个其他文件中引用和更改属性。我会很感激的帮助:)

+0

你的意思如何导出和导入类,并使用它? – error404

回答

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')) 

看看你得到的消息=“[功能:用户名]””

如果没有,你会看到一条消息,告诉你一些也许永远都没有。找到的文件

0

既然你被它分配给module.exports出口Username,你需要把它作为你的处理器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('../models/user'),不require('../models/user-model')

+0

感谢您的帮助:)是否真的不可能在user.handler.js中获取value user.name?我希望在那里获得在文件中定义的值name.handler.js –

+0

要访问** user.handler.js **中的'name',您需要找到一种方法以**名称.handler.js **:你需要一个'User'实例来访问它的属性。我对'alexa-sdk'包不熟悉,但看起来你不能在处理程序之间共享状态/属性。您可能需要合并它们。你可以看看他们的例子,看看这可以帮助你吗? [使技能状态管理更简单](https://www.npmjs.com/package/alexa-sdk#making-skill-state-management-simpler) – yazgazan