javascript 未捕获的语法错误:意外的标记“〈”

qfe3c7zg  于 2022-10-30  发布在  Java
关注(0)|答案(1)|浏览(472)

我是一个编码新手,我使用的是node.js、javascript和html。当我在终端上使用“node index.js”运行服务器时,它会给我一个错误“Uncatched SyntaxError:意外的标记“〈”(在weatherApp.js:1:1)”,显示错误的weatherApp. js文件是index.html ...
index.js

const http = require('http')
const fs = require('fs')
const port = 3000

require('dotenv').config()
const api_key = process.env.API_KEY

const server = http.createServer(function(req, res){
    //#200 represents good status code
    res.writeHead(200, { 'Content-Type': 'text/html' })
    fs.readFile('index.html', function(error, data) {
        if (error) {
            res.writeHead(404)
            res.write('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 listening on port ' + port)
    }
})

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <script src="weatherApp.js" type="text/javascript"></script>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Weather App</title>
</head>
<body>
    <input type="text" placeholder="Search City">
    <button type="button" id="searchButton" onclick="test()">Search</button>
</body>
</html>

weatherApp.js只是一个包含console.log的简单函数。
我尝试删除和错误消失,但仍然希望能够保留和附加.js文件,如果可能的话。

luaexgnf

luaexgnf1#

您需要检查请求URL是否为JS文件,如果是,则将JS文件发送回:

const server = http.createServer(function(req, res){
    if (req.url.startsWith("/weatherApp.js")) {
        res.writeHead(200, { 'Content-Type': 'text/javascript' });
        return fs.readFile('weatherApp.js', function (error, data) {
            if (error) {
                res.writeHead(404);
                res.write('Error: File not found');
            } else {
                res.write(data);
            }
            res.end();
        });
    }

    res.writeHead(200, { 'Content-Type': 'text/html' })
    fs.readFile('index.html', function(error, data) {
        if (error) {
            res.writeHead(404)
            res.write('Error: File not found')
        } else {
            res.write(data)
        }
        res.end()
    })
})

考虑使用一个现代的http服务器框架,比如fastify。正如你所看到的,这里的样板文件是相当混乱的,一个库可以很好地帮助解决这个问题。

相关问题