【问题标题】:javascript error - "SyntaxError: Unexpected token '<' (anonymous function)" in the very first linejavascript 错误 - “SyntaxError: Unexpected token '<' (anonymous function)”在第一行
【发布时间】:2020-05-26 04:05:13
【问题描述】:

作为一个整体,我对 webdev 还是很陌生,这是我第一次尝试使用 Node.js 设置本地服务器。但问题是我在 test.js 第 1 行中收到“SyntaxError: Unexpected token '

这是我的 test.js 文件



console.log('*');

这是我的 index.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);
    }
});

据我了解,这是最基本的千篇一律的代码,我可以用来测试我的本地服务器、html 文件和 test.js 文件是否都可以很好地协同工作,但显然有些事情正在发生错误的。当我单击控制台中的错误时,它会显示我的 index.html 文件,但它说它是我的 test.js 文件,几乎就像正在读取 html 代替我的 javascript 并且正在对其应用 javascript 错误处理一样。我已经检查了几次路径,我 99.99% 确信它们是正确的。不过,我对此一无所知,请告诉我是否有人遇到过类似的情况。谢谢!

【问题讨论】:

    标签: javascript html node.js


    【解决方案1】:

    [原因描述]
    没有处理不同的请求或设置静态资源。
    所有进入您服务器的请求都会响应 index.html。

    您可以在 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/

    【讨论】:

    • 嘿,感谢您的回复,我已经阅读了链接,但我仍然有点困惑,您能否就我的代码中的错误或我遗漏的内容提供一些指导?
    • 虽然我不确定你的项目结构是什么,但我添加了一些示例代码。
    猜你喜欢
    • 2022-06-10
    • 1970-01-01
    • 2016-10-15
    • 2015-04-21
    • 1970-01-01
    • 2022-08-12
    • 2016-12-24
    相关资源
    最近更新 更多