javascript ошибка - «SyntaxError: Unexpected token '<' (anonymous function)» в самой первой строке - PullRequest
0 голосов
/ 26 мая 2020

Я новичок в веб-разработке в целом, и это была моя первая попытка настроить локальный сервер с помощью Node. Однако проблема в том, что я получаю сообщение «SyntaxError: Unexpected token '<' (anonymous function)» в моем тесте. js строка 1. Я знаю, что на самом деле этого нет в строке 1, потому что в строке 1 нет кода. , мой javascript файл, html файл и мой сервер js файл - все очень c, и я понятия не имею, как они могли go ошибаться. </p>

вот мой тест. js файл



console.log('*');

вот мой индекс. html файл

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Test</h1>
</body>
<script type="text/javascript" src = "test.js"></script>
</html>

и вот мой файл сервера, который я запускаю с помощью «node server. js»

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

const port = 3000;

const server = http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/html' });
    fs.readFile('../index.html', function(error, data) {
        if(error) {
            res.writeHead(404);
            res.writeHead('Error: File Not Found');
        } else {
            res.write(data);
        }
        res.end();
    })
});

server.listen(port, function(error) {
    if(error) {
        console.log('something went wrong', error);
    } else {
        console.log('Server is listenting on port ' + port);
    }
});

, насколько я понимаю, это самый базовый c, cook ie -cutter код, который я мог бы использовать, чтобы проверить, работает ли мой локальный сервер, файл html и тест. js file работают вместе, но очевидно, что что-то идет не так. Когда я нажимаю на ошибку в консоли, он показывает мой файл index. html, но говорит, что это мой тест. js файл почти так, как если бы html читается вместо моих javascript и javascript к нему применяется обработка ошибок. Я проверял пути несколько раз и на 99,99% уверен, что они верны. Я ничего не знаю об этом, дайте мне знать, если кто-нибудь из вас сталкивался с чем-то похожим. Спасибо!

1 Ответ

3 голосов
/ 26 мая 2020

[Описание причины]
Не обработал другой запрос или не установил статический c ресурс.
Все запросы, которые пришли на ваш сервер, будут отвечать index. html.

enter image description here

Вы можете добавить консольный журнал в функции createServer. Таким образом, вы обнаружите, что когда req.url является test. js, вы все равно возвращаете ./index.html в запрос.

const server = http.createServer(function (req, res) {
    console.log(req.url)
    res.writeHead(200, { 'Content-Type': 'text/html' });
    fs.readFile('../index.html', function(error, data) {
        if(error) {
            res.writeHead(404);
            res.writeHead('Error: File Not Found');
        } else {
            res.write(data);
        }
        res.end();
    })
});

[Улучшение]
Убедитесь, что когда URL-адрес запроса содержит. js (или другие), он вернет правильный ответ.

const server = http.createServer(function (req, res) {
    // fs.readFile('../index.html', function(error, data) {
    fs.readFile(__dirname + req.url, function (err,data) {
        if(error) {

https://nodejs.org/en/knowledge/HTTP/servers/how-to-serve-static-files/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...