Я новичок в 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.

Заранее спасибо

Питер

0
Peter Plex 25 Фев 2021 в 00:02

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

Дополнительные сведения можно найти в этом руководстве: Как обслуживать статические файлы.

0
tmilar 24 Фев 2021 в 21:40

Это последний код, который я использую. Я поместил файл 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())

Большое спасибо!!!!

0
Peter Plex 24 Фев 2021 в 22:29