Как запустить html файл с помощью node js

У меня есть простая html-страница с angular js следующим образом:

    //Application name
    var app = angular.module("myTmoApppdl", []);

    app.controller("myCtrl", function ($scope) {
        //Sample login function
        $scope.signin = function () {
            var formData =
                    {
                        email: $scope.email,
                        password: $scope.password
                    };
        console.log("Form data is:" + JSON.stringify(formData));
    };
});

HTML файл:

<html>
    <head>
        <link href="bootstrap.min.css" rel="stylesheet" type="text/css"/>
    </head>

    <body ng-app="myTmoApppdl" ng-controller="myCtrl">
        <div class="container">
            <div class="form-group">
                <form class="form" role="form" method="post" ng-submit="signin()">
                    <div class="form-group col-md-6">
                        <label class="">Email address</label>
                        <input type="email" class="form-control" ng-model="email" id="exampleInputEmail2" placeholder="Email address" required>
                    </div>
                    <div class="form-group col-md-6">
                        <label class="">Password</label>
                        <input type="password" class="form-control" id="exampleInputPassword2" ng-model="password" placeholder="Password" required>
                    </div>
                </form>
                <button type="submit" class="btn btn-primary btn-block">Sign in</button>
            </div>
        </div>
    </body>

    <script src="angular.min.js" type="text/javascript"></script>

    <!--User defined JS files-->
    <script src="app.js" type="text/javascript"></script>
    <script src="jsonParsingService.js" type="text/javascript"></script>
</html>

Я новичок в node js. Я установил node js-сервер в мою систему, но я не уверен, как запустить простой html файл с помощью node js?

Ответ 1

Вы можете использовать встроенный веб-сервер nodejs.

Добавьте файл server.js, например, и введите следующий код:

var http = require('http');
var fs = require('fs');

const PORT=8080; 

fs.readFile('./index.html', function (err, html) {

    if (err) throw err;    

    http.createServer(function(request, response) {  
        response.writeHeader(200, {"Content-Type": "text/html"});  
        response.write(html);  
        response.end();  
    }).listen(PORT);
});

И после запуска сервера с консоли с командой node server.js. Ваша страница index.html будет доступна по адресу URL http://localhost:8080

Ответ 2

Просто установите http-сервер глобально

npm install -g http-server

когда вам нужно запустить html файл, запустите команду http-server Например: ваш html файл находится в /home/project/index.html  вы можете сделать /home/project/$ http-server

Это даст вам ссылку на доступ к вашим веб-страницам: http-server Starting up http-server, serving ./ Available on: http://127.0.0.1:8080 http://192.168.0.106:8080

Ответ 3

Я тоже столкнулся с таким сценарием, когда мне пришлось запускать веб-приложение в nodejs, где index.html является точкой входа. Вот что я сделал:

  • запустить node init в корневом каталоге приложения (это создаст файл package.json)
  • install express в корневом npm install --save express приложения: npm install --save express (save будет обновлять package.json с выраженной зависимостью)
  • создайте общую папку в корне вашего приложения и поместите свой файл точки входа (index.html) и все его зависимые файлы (это просто для упрощения, в большом приложении это может быть не очень хороший подход).
  • Создайте файл server.js в корневом каталоге приложения, где мы будем использовать экспресс-модуль узла, который будет обслуживать общую папку из текущего каталога.
  • server.js

    var express = require('express');
    var app = express();
    app.use(express.static(__dirname + '/public')); //__dir and not _dir
    var port = 8000; // you can use any port
    app.listen(port);
    console.log('server on' + port);
    
  • сделать node server: он должен выводить "сервер на 8000",

  • запустите http://localhost: 8000/: будет вызван ваш index.html

Структура файла будет примерно такой же

Ответ 4

Переместите ваш HTML файл в папку "www". Создайте файл "server.js" с кодом:

var express = require('express');
var app = express();

app.use(express.static(__dirname + '/www'));

app.listen('3000');
console.log('working on 3000');

После создания файла выполните команду "node server.js"

Ответ 5

Либо вы используете фреймворк, либо пишете свой собственный сервер с nodejs.

Простой файловый сервер может выглядеть следующим образом:

import * as http from 'http';
import * as url from 'url';
import * as fs from 'fs';
import * as path from 'path';

var mimeTypes = {
     "html": "text/html",
     "jpeg": "image/jpeg",
     "jpg": "image/jpeg",
     "png": "image/png",
     "js": "text/javascript",
     "css": "text/css"};

http.createServer((request, response)=>{
    var pathname = url.parse(request.url).pathname;
    var filename : string;
    if(pathname === "/"){
        filename = "index.html";
    }
    else
        filename = path.join(process.cwd(), pathname);

    try{
        fs.accessSync(filename, fs.F_OK);
        var fileStream = fs.createReadStream(filename);
        var mimeType = mimeTypes[path.extname(filename).split(".")[1]];
        response.writeHead(200, {'Content-Type':mimeType});
        fileStream.pipe(response);
    }
    catch(e) {
            console.log('File not exists: ' + filename);
            response.writeHead(404, {'Content-Type': 'text/plain'});
            response.write('404 Not Found\n');
            response.end();
            return;
    }
    return;
    }
}).listen(5000);

Ответ 6

Это простой html файл "demo.htm", хранящийся в той же папке, что и файл node.js.

<!DOCTYPE html>
<html>
  <body>
    <h1>Heading</h1>
    <p>Paragraph.</p>
  </body>
</html>

Ниже приведен файл node.js для вызова этого html файла.

var http = require('http');
var fs = require('fs');

var server = http.createServer(function(req, resp){
  // Print the name of the file for which request is made.
  console.log("Request for demo file received.");
  fs.readFile("Documents/nodejs/demo.html",function(error, data){
    if (error) {
      resp.writeHead(404);
      resp.write('Contents you are looking for-not found');
      resp.end();
    }  else {
      resp.writeHead(200, {
        'Content-Type': 'text/html'
      });
      resp.write(data.toString());
      resp.end();
    }
  });
});

server.listen(8081, '127.0.0.1');

console.log('Server running at http://127.0.0.1:8081/');

В командной строке введите указанный выше файл nodejs и сообщение "Сервер, работающий на http://127.0.0.1:8081/" отображается. Теперь в вашем браузере type " http://127.0.0.1:8081/demo.html".

Ответ 7

Самая простая команда на сегодняшний день:

npx http-server

Для этого требуется существующий файл index.html в каталоге, в котором выполняется эта команда.

Об этом уже упоминала Виджая Симха, но я подумала, что немного укороту.