Получение `Uncaught ReferenceError: $ не определено` для $ в jquery в приложении узла

#jquery #node.js

#jquery #node.js

Вопрос:

У меня были некоторые files ( html, css, js ), развернутые на сервере Apache Tomcat. В HTML-файле используются следующие известные библиотеки.

    <script src="libs/external/jquery/dist/jquery.min.js"></script>
   
   <link rel="stylesheet" href="libs/external/bootstrap/dist/css/bootstrap.min.css">
   <link rel="stylesheet" href="libs/external/bootstrap-select/dist/css/bootstrap-select.min.css" />
  
   <script src="libs/external/popper.js/dist/umd/popper.min.js"></script>
   <script src="libs/external/bootstrap/dist/js/bootstrap.min.js"></script>
   <script src="libs/external/bootstrap-select/dist/js/bootstrap-select.min.js"></script>
  

Теперь я хочу, чтобы одно и то же приложение обслуживалось через Node JS Server .

Я новичок в node.

Я создал app.js файл и выполнил следующие основные действия

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


var createServerCallback = function (req, res) {

    let url_parts = url.parse(req.url);
    let filePath = url_parts.pathname;

    let extension = '';
    let contentType = 'text/html';

    if (filePath == '/') {
        filePath = '/index.html';
    }

    if (url_parts.pathname.lastIndexOf(".") !== -1) {
        extension = url_parts.pathname.substring(url_parts.pathname.lastIndexOf("."));
        switch (extension) {
            case '.js':
                contentType = 'text/javascript';
                break;
            case '.css':
                contentType = 'text/css';
                break;
        }
    }
    let path = "."   filePath;

    fs.readFile(path, function (err, data) {
        res.writeHead(200, { 'Content-Type': contentType });
        res.end(data);
    });
    
};

http.createServer(createServerCallback).listen(8010, 'localhost');
console.log('Server running.'); 
  

Структура выглядит следующим образом-

index.html это основной файл, который внутренне ссылается на описанные выше скрипты, которые хранятся в libs папке.

Все работало хорошо, но теперь я получаю Uncaught ReferenceError: $ is not defined .

введите описание изображения здесь

Поскольку jquery код в index.js будет выполняться в окне браузера, какое это node имеет к этому отношение?

Комментарии:

1. Похоже, вы обращаетесь к своему процессу узла. Вместо этого переключитесь на консоль вашего браузера, и у вас будет доступ к jQuery.

Ответ №1:

Поскольку код jquery в index.js будет выполняться в окне браузера, какое отношение к этому имеет узел?

Посмотрите на командную строку, которую вы выполняете в своей IDE.

Вы явно загружаете index.js с Node.js !

Возможно, вы нажали какую-то кнопку или комбинацию клавиш «Debug this JS file» в вашей IDE, и она настроена на обработку файлов JS в Node.js .

Вместо этого загрузите HTML-документ в свой браузер (после запуска Node.js программа, запустив app.js с Node.js вместо index.js того , чтобы .