2017-09-01 52 views
1

我使用的是后端的NodeJS部署应用程序的角度(以下this tutorial在鸣叫拉进我的应用程序的前端。如何使用的NodeJS

现在,我已经准备好部署到开发服务器,我我已经用ng build --prod打包了前端,除了带有加载推文的模块之外,它的外观和工作都很好,我该如何托管应用程序的节点服务器部分以正确显示推文?

这里是我的文件节点应用程序,它保存在我的项目文件夹的根目录下,在src之外。

server.js

var express = require('express'); 
var bodyParser = require('body-parser'); 
var cors = require('cors'); 
var functions = require('./functions'); 

var app = express(); 

app.use(bodyParser.urlencoded({extended: true})); 
app.use(cors()); 
app.post('/authorize', functions.authorize); 
app.post('/search', functions.search); 


app.listen(3000); 
console.log('listening now'); 

functions.js

var request = require('request'); 
var config = require('./config'); 

functions = { 
    authorize: function(req, res) { 
     var header = config.consumerkey + ':' +config.consumersecret; 
     var encheader = new Buffer(header).toString('base64'); 
     var finalheader = 'Basic ' + encheader; 

     request.post('https://api.twitter.com/oauth2/token', {form: {'grant_type': 'client_credentials'}, 
     headers: {Authorization: finalheader}}, function(error, response, body) { 
      if(error) 
      console.log(error); 
      else { 
       config.bearertoken = JSON.parse(body).access_token; 

       res.json({success: true, data:config.bearertoken}); 
      } 

     }) 
    }, 

    search: function(req, res) { 
     var searchquery = req.body.query; 
     var encsearchquery = encodeURIComponent(searchquery); 
     var bearerheader = 'Bearer ' + config.bearertoken; 
     request.get('https://api.twitter.com/1.1/search/tweets.json?q=' + encsearchquery + 
     '&result_type=recent', {headers: {Authorization: bearerheader}}, function(error, body, response) { 
      if(error) 
      console.log(error); 
      else { 
       res.json({success: true, data:JSON.parse(body.body)}); 
      } 
     }) 
    } 
} 
module.exports = functions; 

config.js

var appsettings = { 
    consumerkey: 'key', 
    consumersecret: 'key', 
    bearertoken: '' 
}; 

module.exports = appsettings; 

的package.json

{ 
    "name": "backend", 
    "version": "1.0.0", 
    "description": "", 
    "main": "server.js", 
    "scripts": { 
    "start": "node server", 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "brooklynbrim", 
    "license": "MIT", 
    "devDependencies": { 
    "body-parser": "^1.17.2", 
    "cors": "^2.8.4", 
    "express": "^4.15.4", 
    "request": "^2.81.0" 
    } 
} 

回答

1

我会建议您的主机在Heroku上的应用程序的NodeJS。 你可以开始Here

而对于Angular App,我会向你推荐Firebase。最简单的方式来托管你的角度应用程序。 How to deploy Angular apps on Firebase

+0

非常感谢,我会给它一个机会! Heroku上的任何端口信息是否需要更改? @Juan Camilo Giraldo Chaverra – bluebrooklynbrim

+1

完美的解决方案! heroku教程起作用。我有一个(工作提供的开发)服务器,我必须使用,但我仍然会考虑我自己的项目的Firebase。谢谢! – bluebrooklynbrim