为这个令人困惑的标题道歉,令人困惑的标题是我自己混淆的副产品。
我正在使用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 <
感到困惑,我检查了&#34;来源&#34;在Chrome devtools中,尽管Chrome说它正在加载&#34; test.js&#34;它作为&#34; test.js&#34;运行的代码与&#34; test.html&#34;的相同。有谁知道为什么会这样?
我使用了一个相同的方法,以便在同一个文件中的其他休息调用中传递html / css / js,并且所有这些页面都按预期工作。
答案 0 :(得分:0)
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(&#39; / profile /:url&#39;,(request,response)=&gt; { response.sendFile(&#39; static_pages / test.html&#39;,{root:__ dirname}); });
app.use(express.static(__目录名+&#39; / static_pages&#39;));
<script src="/test.js"></script>
请注意,.
已删除,因此您无法从 root 访问,而不是从当前路径段访问。