Как запустить 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 в каталоге, в котором выполняется эта команда.
Об этом уже упоминала Виджая Симха, но я подумала, что немного укороту.