2016-12-31 4 views
0

Я следую нескольким учебникам, которые я нашел в Интернете для создания веб-приложения, которое использует RESTful API со стеком MEAN.Как запустить NodeJS API с угловым файлом app.js?

У меня возникли проблемы с одновременным использованием обоих серверов API и угловых маршрутов. Я создал 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 и перейти к локальной машине: 5000 (или любой другой порт, то), Я получаю

Я предполагаю, что это связано с тем, что у меня нет маршрута в моем server.js файле до '/'.

Как сначала запустить приложение из файла app.js и использовать его API?

+0

Вам нужна точка входа в вашем server.js, который запускает приложение. Вы используете экспресс? – Zeokav

+0

Да, я использую экспресс. Я определил все маршруты API в файле server.js. Я просто не уверен, как подключить его к угловой стороне –

ответ

1

Вы не можете установить GET /, поскольку приложение не было установлено для обслуживания на вашем сервере. Для этого вам нужно создать точку входа, которая будет сервером с сервера, который, в свою очередь, будет обрабатывать все ваши угловые маршруты, представления, контроллеры и т. Д.
В файле 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 и поместить APIs там:

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!'); 
}); 

4- использовать файл index.html в server.js:

app.use('/',routes); 

 Смежные вопросы

  • Нет связанных вопросов^_^