Node js как http-сервер и хост angularJS SPA

У меня есть приложение, написанное на angularJS и построенное ворчанием. Есть ли способ создать http-сервер из node js и разместить его там. Пожалуйста, поделитесь любым фрагментом кода или документом, который поможет. Благодаря

Ответ 1

  • (простейший), если у вас нет логики на стороне сервера, вы можете просто обслуживать клиентскую сторону AngularJS/HTML/css через модуль http-server от npm. https://www.npmjs.com/package/http-server Просто установите его через $ > npm install -g http-server и перейдите в папку клиента, введите http-сервер и нажмите enter.

  • Если у вас написан код на стороне сервера (ExpressJS или обновить веб-api), используйте $ > nodemon server.js

  • Если вы ищете варианты для производственных приложений, рассмотрите навсегда /pm 2 https://www.npmjs.com/package/pm2 https://www.npmjs.com/package/forever

Ответ 2

Используйте следующий код в файле app.js.

var express = require('express');

var path = require('path');
var bodyParser = require('body-parser');
var app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.static(path.join(__dirname, 'public')));

/* GET home page. */
app.get('/', function(req, res, next) {
  //Path to your main file
  res.status(200).sendFile(path.join(__dirname+'../public/index.html')); 
});

module.exports = app;

Запустите файл app.js, используя node app.js

Ответ 3

Этот пример работает для меня в любом случае

Даже если у вас есть базовый URL или нет

Исходный код здесь

var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
/**
 * This server should host angular appliation with or without base-url
 * The angular static resources should be under './public'
 */
var app = express();
app.use(function(req, res, next) {
  console.log('Time:', Date.now() + ":", req.originalUrl)
  next()
})
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: false
}));
app.use(express.static(path.join(__dirname, 'public')));
app.use('/base-here-if-any', express.static(path.join(__dirname, 'public')))

app.get('*', function(req, res, next) {
  //Path to your main file
  res.status(200).sendFile(path.join(__dirname + '/public/index.html'));
});


const port = 3000


app.listen(port, () => console.log('Example app listening on port ${port}!'))