Я новичок в node.js.
Моя проблема в том, что html-файл index.html, называемый localhost: 5000, похоже, не загружает файл javascript test.js.
Я запускаю сервер
Nodejs server.js
Из ракушки. Файлы
Server.js :
var http = require('http');
const process = require('process');
var fs = require('fs');
var server = http.createServer(function (request, response) {
if (request.url === "/") {
fs.readFile("index.html", function (error, pgResp) {
if (error) {
response.writeHead(404);
response.write('Page is not found');
} else {
response.writeHead(200, { 'Content-Type': 'text/html' });
response.write(pgResp);
}
response.end();
});
} else {
response.writeHead(200, { 'Content-Type': 'text/html' });
response.write('<h1>Default Content</h1>');
response.end();
}});
server.listen(5000);
console.log('Server is listening on 5000');
console.log(process.cwd())
Путь process.cwd () - это путь к трем файлам server.js, index.html и test.js.
Index.html:
<html>
<body>
<center>
<h2>Testing NodeJS Application </h2>
<p> This is my first web application using NodeJS </p>
</center>
<script type="text/javascript" src="test.js"></script>
<script>
alert('Even this is a Test!');
</script>
</body>
</html>
И test.js:
alert('I am here!');
Предупреждение в index.html отображается, предупреждение в test.js - нет.
Я использую Ubuntu 18.04.
Заранее спасибо
Питер
2 ответа
Проблема заключается в том, как вы импортируете скрипт test.js в свой HTML-файл:
<script type="text/javascript" src="test.js"></script>
Этот файл загружается в ваш браузер, но маршрут, указанный в src=
, не может быть разрешен, поскольку "test.js"
не является допустимым URL-адресом или маршрутом к файлу, из которого вы можете его загрузить.
Сначала вы должны определить, откуда вы собираетесь открывать файл "test.js"
, чтобы его можно было получить из браузера, а затем исправить значение в src=
на фактический URL.
Например, распространенной практикой является раскрытие общедоступных файлов в папке /public/
в коде вашего сервера, а затем раскрытие файлов в ней, когда URL-адрес соответствует такому шаблону /public/**some-file.js
.
В своем коде вы можете добиться этого, выполнив:
//...
var path = require('path');
var server = http.createServer(function (request, response) {
if (request.url.startsWith("/public/")) {
fs.readFile(path.join(__dirname, path.normalize(req.url)), function (err,data) {
if (err) {
res.writeHead(404);
res.end(JSON.stringify(err));
return;
}
res.writeHead(200);
res.end(data);
});
return;
}
if (request.url === "/") {
// ...
} else {
// ...
}});
//... rest of your code
Дополнительные сведения можно найти в этом руководстве: Как обслуживать статические файлы.
Это последний код, который я использую. Я поместил файл javascript test.js в папку с именем public.
var path = require('path');
var http = require('http');
var static = require('node-static');
const process = require('process');
var fs = require('fs');
var server = http.createServer(function (request, response) {
if (request.url.startsWith("/public/")) {
fs.readFile(path.join(__dirname, path.normalize(request.url)), function (err,data) {
if (err) {
response.writeHead(404);
response.end(JSON.stringify(err));
return;
}
response.writeHead(200);
response.end(data);
});
return;
}
if (request.url === "/") {
fs.readFile("index.html", function (error, pgResp) {
if (error) {
response.writeHead(404);
response.write('Page is not found');
} else {
response.writeHead(200, { 'Content-Type': 'text/html' });
response.write(pgResp);
}
response.end();
});
} else {
response.writeHead(200, { 'Content-Type': 'text/html' });
response.write('<h1>Default Content</h1>');
response.end();
}
});
server.listen(5000);
console.log('Server is listening on 5000');
console.log(process.cwd())
Большое спасибо!!!!
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.