2017-04-25 72 views
4

我想知道如何在Azure函數上部署Node.js應用程序。在Azure函數上部署Node應用程序

基本上,我有一個功能設置和運行,看起來像一個基本的Hello World HTTP例如:

module.exports = function (context, req) { 
    context.log('JavaScript HTTP trigger function processed a request.'); 
    context.res = { 
     // status: 200, /* Defaults to 200 */ 
     body: "Hello " + req.params.name 
    }; 
    context.done(); 
}; 

我試圖部署到一個功能的應用程序是使用招搖簡單的MOC客戶端(基本上接受請求並返回一些xml)。在app.js的樣子:

const SwaggerExpress = require('swagger-express-mw'); 
const app = require('express')(); 
const compression = require('compression'); 

const configSwagger = { 
    appRoot: __dirname, // required config 
}; 


SwaggerExpress.create(configSwagger, (err, swaggerExpress) => { 
    if (err) { 
     throw err; 
    } 

    // install middleware 
    swaggerExpress.register(app); 

    // server configuration 
    const serverPort = process.env.PORT || 3001; 
    app.listen(serverPort,() => { 
     //logger.info('Listening on port %s', serverPort); 
    }); 

    app.use(compression()); 
}); 

module.exports = app; // for testing 

我不知道的是如何處理module.exports =應用程序時modeul.exports用於建立函數的事情(即module.exports =功能(背景下, req))

+0

一個例子[git-and-nodejs-on-azure-functions](https://michaelheap.com/git-and-nodejs-on-azure-functions/) – GGleGrand

+0

撇開使用azure-function-express你應該當函數容器已經在http端口上偵聽時,請去掉app.listen()調用。 – gpilotino

回答

3

你可以嘗試使用azure-function-express來啓用你的swagger中間件。

請注意,某些中間件將無法正常運行(例如body-parser)。這是因爲函數req不是流 - 它被注入到已經填充了「body」屬性的函數中。

+0

相關https://github.com/yvele/azure-function-express/issues/9#issuecomment-319297131 –

相關問題