2016-11-03 54 views
1

我的代碼,工程類..如何要求的Node.js

var express=require("express"), 
app=express(); 

class bar { 
    constructor() 
    { 
    this.user_name=null; 
    this.user_surname=null; 
    this.user_age=null; 
    } 

    name(user_name) { 
    this.user_name=user_name; 
    return this; 
    } 

    surname(user_surname) { 
    this.user_surname=user_surname; 
    return this; 
    } 

    age(user_age) { 
    this.user_age=user_age; 
    return this; 
    } 

    get(callback) { 

    var list ={}; 

    list.uname=this.user_name; 
    list.usurname=this.user_surname; 
    list.uage=this.user_age; 

    callback(list); 
    } 

} 



app.get("/liste/:ext",function(req,res){ 

    var ext=req.params.ext; 

    res.setHeader('Content-Type', 'application/json'); 

    if(ext==1) 
    { 
    var newbar=new bar(); 
    newbar.name("alex").surname("broox").age(32).get(function(result){ 
     res.json({data:result}) 
    }) 

    } 

    if(ext==2) 
    { 
    var newbar=new bar(); 
    newbar.name("alex2").get(function(result){ 
     res.json({data:result}) 
    }) 
    } 

}) 

app.listen(4000,function(log){ 
    console.log("listening") 
}) 

but..following代碼不起作用。與需要從其他文件類..

測試。 JS

module.exports = { 

class bar { 
    constructor() 
    { 
    this.user_name=null; 
    this.user_surname=null; 
    this.user_age=null; 
    } 

    name(user_name) { 
    this.user_name=user_name; 
    return this; 
    } 

    surname(user_surname) { 
    this.user_surname=user_surname; 
    return this; 
    } 

    age(user_age) { 
    this.user_age=user_age; 
    return this; 
    } 

    get(callback) { 

    var list ={}; 

    list.uname=this.user_name; 
    list.usurname=this.user_surname; 
    list.uage=this.user_age; 

    callback(list); 
    } 

} 

}; 

app.js文件。與要求類

var express=require("express"), 
app=express(); 


require("./test") 



app.get("/liste/:ext",function(req,res){ 

    var ext=req.params.ext; 

    res.setHeader('Content-Type', 'application/json'); 

    if(ext==1) 
    { 
    var newbar=new bar(); 
    newbar.name("alex").surname("broox").age(32).get(function(result){ 
     res.json({data:result}) 
    }) 

    } 

    if(ext==2) 
    { 
    newbar.name("alex2").get(function(result){ 
     res.json({data:result}) 
    }) 
    } 

}) 

app.listen(4000,function(log){ 
    console.log("listening") 
}) 

但它爲什麼不工作...請幫助我..上面的代碼,但工作,但此代碼不起作用..

回答

1

test.js是無效的語法 - 你不應該有你的整個文件包裝在大括號像那樣。 module.exports只是您設置的變量;如果你要導出bar,將其設置爲bar

class bar { 
    ... 
} 

module.exports = bar; 

此外,還需要分配在app.jsrequire調用的結果。

var bar = require("./test"); 

(在一個稍微迂腐的音符 - 這是更地道,以captialize類的名字!)

5

當節點導出類,你需要首先定義類,然後導出使用module.exports類其次您希望導出的班級名稱。

class bar { 
     constructor() 
     { 
     this.user_name=null; 
     this.user_surname=null; 
     this.user_age=null; 
     } 

     name(user_name) { 
     this.user_name=user_name; 
     return this; 
     } 

     surname(user_surname) { 
     this.user_surname=user_surname; 
     return this; 
     } 

     age(user_age) { 
     this.user_age=user_age; 
     return this; 
     } 

     get(callback) { 

     var list ={}; 

     list.uname=this.user_name; 
     list.usurname=this.user_surname; 
     list.uage=this.user_age; 

     callback(list); 
     } 
} 
     module.exports = bar 

從那裏你可以只require該文件,並抓住類。

var Bar = require('./test'); 
var bar = new Bar(); 
+0

感謝您的解決方案 –

0

您好再次@DominicValenciana

test.js

class bar { 
    constructor() 
    { 
    this.user_name=null; 
    this.user_surname=null; 
    this.user_age=null; 
    } 

    name(user_name) { 
    this.user_name=user_name; 
    return this; 
    } 

    surname(user_surname) { 
    this.user_surname=user_surname; 
    return this; 
    } 

    age(user_age) { 
    this.user_age=user_age; 
    return this; 
    } 

    get(callback) { 

    var list ={}; 

    list.uname=this.user_name; 
    list.usurname=this.user_surname; 
    list.uage=this.user_age; 

    callback(list); 
    } 

} 

module.exports = bar; 

app.js

var express=require("express"), 
app=express(); 


app.get("/liste/:ext",function(req,res){ 

    var ext=req.params.ext; 

    res.setHeader('Content-Type', 'application/json'); 

    if(ext==1) 
    { 
    var bar=new require('./test'); 
    bar.name("alex").surname("broox").age(32).get(function(result){ 
     res.json({data:result}) 
    }) 

    } 

    if(ext==2) 
    { 
    var bar=new require('./test'); 
    bar.name("alex2").get(function(result){ 
     res.json({data:result}) 
    }) 
    } 

}) 

app.listen(4000,function(log){ 
    console.log("listening") 
}) 

的錯誤:類型錯誤:bar.name不是一個函數

+0

那麼讓我們快速嘗試一下。 'var bar = new require('./ test')();' – DominicValenciana

+0

還要確保'app.js'和'test.js'在同一個目錄下。 – DominicValenciana

+0

我也試過了.var吧= new require('./ test')();錯誤所以:類型錯誤:類構造器欄不能被調用沒有'新' –