2017-07-20 39 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