2016-11-24 105 views
0

嗨我想創建一個使用es6類的node.js服務器。 由於某些原因要求我的服務器類不起作用,我不明白爲什麼它不起作用。 PS:要求配置按預期工作。Node.js:要求一個類不起作用

節點版本: 5.7.0

Server.js:

"use strict" 
const express = require('express') 
const path = require('path') 



class Server { 

    constructor(configuration) { 
     this.title = "Points Dashboard"; 
     this.app = express(); 
     this.configureAuthentication(configuration) 
    } 

    listen(port, callback) { 
     this.app.listen(port, callback); 
    } 
} 

module.exports = Server; 

app.js:

"use strict" 

const configuration = require('./lib/configuration'); 
const Server = require('./lib/Server') 

const server = new Server(configuration) 

server.listen(configuration.server.public_port,() => { 
    console.log(`Server running on ${configuration.server.public_url}, internal port ${configuration.server.public_port}`) 
}) 

錯誤:

TypeError: Server is not a function

... callstack

at Object. (/root/app.js:6:16)

項目晶格結構:

enter image description here

調試日誌:

enter image description here

+0

是在currentdir/lib內的server.js? – Karim

+0

@Karim是的,因爲配置和服務器都在lib中,並且需要配置工程 –

+0

您是否嘗試調試Server等於? – estus

回答

0

終於讓我找到了錯誤,這真是一個愚蠢的一個。 我上面發佈的代碼是正確的。我在這個問題中沒有提到的是,我正在使用docker。在編寫我的docker文件時,我忘記添加一行來將本地機器上的代碼與容器內運行的代碼同步。在我創建容器時,我忘了添加module.exports = Server;,這就是爲什麼require不起作用的原因。

我正在使用Visual Studio代碼調試Docker容器內部的代碼,但由於我從未在app.js中更改過某些內容,因此無法看到在與本地代碼不同的容器內運行的代碼。

感謝您的幫助!