gpt4 book ai didi

javascript - 浏览器在js文件(node.js)中加载html

转载 作者:行者123 更新时间:2023-11-28 05:20:46 25 4
gpt4 key购买 nike

对令人困惑的标题表示歉意,令人困惑的标题是我自己的困惑的副产品。

我正在使用 Node.js 编写一个 Web 服务器和一个 API。一切都很顺利,直到我遇到了这个问题。这是我的服务器/api 代码:

const express = require('express');
const app = express();
const port = 9001;
const bodyParser = require('body-parser');
const mysql = require('mysql');

app.get('/profile/:url', (request, response) =>{
app.use('/profile/:url', express.static(__dirname+'/static_pages'));
response.sendFile('static_pages/test.html', {root: __dirname});
});

这是 test.html:

<!DOCTYPE html>
<html lang= "en">
<head>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<script type="text/javascript" src="./test.js"></script>
</head>
<body>
<div class="test">test</div>
</body>
</html>

这是 test.js:

console.log('i run correctly!');

现在,如果我使用浏览器打开文件,test.html 会按预期执行所有操作。但是,如果我运行服务器并导航到 127.0.0.1:9001/profile/XXXXX ,我会收到以下错误:

Uncaught SyntaxError: Unexpected token <

困惑的是,我在 Chrome 开发工具的“源”下进行了检查,尽管 Chrome 说它正在加载“test.js”,但它作为“test.js”运行的代码与“test.html”的代码相同。有谁知道为什么会发生这种情况?

我使用了相同的方法在同一文件中的其他其余调用中传递 html/css/js,并且所有这些页面都按预期工作。

最佳答案

app.get('/profile/:url', (request, response) =>{
app.use('/profile/:url', express.static(__dirname+'/static_pages'));
response.sendFile('static_pages/test.html', {root: __dirname});
});

这没有道理。

每次收到对 /profile/:url 的请求时,您都会尝试设置静态插件,然后返回 test.html 的内容。

当浏览器请求 /profile/test.js 时,该代码...返回 test.html 的内容。

大概您计划在其中放置一些动态代码来动态生成个人资料页面。这意味着您不应该将 JS 放在 `/profile/下,因为它不是个人资料页面。

所以:

正确配置静态插件:

app.get('/profile/:url', (请求, 响应) =>{ response.sendFile('static_pages/test.html', {root: __dirname}); });

app.use(express.static(__dirname+'/static_pages'));

将 URL 指向正确的位置:

<script src="/test.js"></script>

请注意,. 已被删除,因此您可以从而不是当前路径段进行访问。

关于javascript - 浏览器在js文件(node.js)中加载html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40578617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com