2016-12-31 25 views
0

我正在關注一些我在網上找到的用於創建使用RESTful API和MEAN堆棧的Web應用程序的教程。如何使用Angular app.js文件運行NodeJS API?

我無法一起實現API服務器和Angular路由。我創建了一個server.js文件處理路線/api/,所以,比如我有:

... 
app.get('/api', function(req, res) { 
    res.status(200).json({"message": "Welcome to the app"}); 
}); 

所以當API服務器收到一個請求,它只是發回一個JSON消息。現在,我也有一個app.js文件中有對角碼公用文件夾:

var app = angular.module('app', ['ngRoute']); 

app.config(function($routeProvider) { 
    $routeProvider 
    .when('/', { 
     templateUrl: 'views/index.html', 
     controller: 'AppController', 
     resolve: { 
      message: function(Message) { 
       return Message.getMessage(); 
      } 
     } 
    }) 
    .service("Message", function($http) { 
     this.getMessage = function() { 
      return $http.get('/api') 
      .then(function(response) { 
       return response; 
      }, function(response) { 
       alert("Error retrieving message"); 
      }); 
     } 
    }) 
    .controller("AppController", function(message, $scope) { 
     $scope.message = message.data; 
    }); 
}); 

所以,當我開始在命令行我的服務器上運行node server.js去爲localhost:5000(或爲任何端口),我得到一個Cannot GET /

我假設這是因爲我沒有在我的server.js文件中的路由到'/'

我該如何從app.js文件中先運行應用程序並讓它使用API​​?

+0

您需要在您的server.js的入口點運行的應用程序。你使用快遞嗎? – Zeokav

+0

是的,我使用快遞。我在server.js文件中定義了所有的API路由。我只是不確定如何將它連接到有角度的一面 –

回答

1

您無法獲取/因爲應用程序尚未安裝在您的服務器上。爲此,您需要創建一個入口點,該入口點將成爲來自服務器的服務器,然後它將處理所有角路由,視圖,控制器等。
在您的server.js文件中,對於每個請求匹配你定義的那些api路由,你需要將它轉發到你的角度應用程序,其中ng-route將加載相應於你請求的URL的視圖。
要安裝:

app.get('*', function(request, response){ 
    response.sendfile('/path/to/your/entry.html'); 
}); 

現在這個entry.html將包含您的角度應用(或任一前端框架使用爲此事)

0

你並不需要創建的index.html路線文件只是添加到服務器文件的下面一行,並將index.html文件放入客戶端文件夾中。

app.use(express.static(path.join(__dirname, '<client_folder_name>'))); 

當您啓動服務器,然後打開http://localhost:5000然後index.html文件自動呈現。

0

您可以通過以下4個步驟做:

1在那裏創建index.html文件,並把蜜蜂:

app.get('/api', function(req, res) { 
    res.status(200).json({"message": "Welcome to the app"}); 
}); 

2 - 需要新創建的index.html文件服務器.js文件:

var routes = require('./index'); 

3-創建服務器,並聽取端口:

var server = app.listen(5000, function() { 
    console.log('nodejs server is listening on port 5000!'); 
}); 
在server.js

4-使用index.html文件:

app.use('/',routes); 
相關問題