我正在学习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);
}
}
如何在程序中的其他文件中引用新用户对象?我希望每次我的用户启动一个程序时我都会得到一个新的用户对象,我可以在每个其他文件中引用和更改属性。我非常感谢你的帮助:)
答案 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')