Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 解释为CSS文件请求的嵌套路由请求_Javascript_Html_Node.js_Reactjs_React Router - Fatal编程技术网

Javascript 解释为CSS文件请求的嵌套路由请求

Javascript 解释为CSS文件请求的嵌套路由请求,javascript,html,node.js,reactjs,react-router,Javascript,Html,Node.js,Reactjs,React Router,我甚至不知道该如何表达这个问题 基本上,我有一个React应用程序,我使用React路由器进行路由处理,还有一个节点服务器在每次请求时发回index.html文件,并在使用React路由器的HistoryLocation配置时处理静态资产。将每个请求记录到该服务器,我可以看到,转到基本url会发送3个请求,并且一切正常: GET/200 3.795毫秒-- GET/static/app.css 200 2.234 ms-- GET/build/bundle.js 200 0.608 ms--

我甚至不知道该如何表达这个问题

基本上,我有一个React应用程序,我使用React路由器进行路由处理,还有一个节点服务器在每次请求时发回index.html文件,并在使用React路由器的HistoryLocation配置时处理静态资产。将每个请求记录到该服务器,我可以看到,转到基本url会发送3个请求,并且一切正常:


GET/200 3.795毫秒--
GET/static/app.css 200 2.234 ms--
GET/build/bundle.js 200 0.608 ms--


任何常规浅层路线(例如
/a
)也是如此。但是,当我尝试访问嵌套路由(例如,
/a/b
)时,一切都会中断。更具体地说,在窗口中,我得到了一个语法错误
Uncaught SyntaxError:Unexpected token,您的网页中可能有类似于
“static/app.css”
的静态资源URL,这是一个完全相对的URL。执行此操作时,浏览器会在与当前网页相同的路径上请求该文件名,并且会根据当前网页的路径而有所不同。因此,如果您的网页是
/a.html
,它将请求
/static/app.css
。如果您的网页是
/a/b.html
,它将请求
/a/static/app.css
(这似乎就是您看到的)

您可能需要的是静态资源的域相对路径,该路径以前导的
/
开头,看起来像
“/static/app.css”
。前导斜杠使其仅相对于域,而不是网页的路径。无论网页的路径是什么,浏览器都会发出相同的请求,因为路径是相对于域顶部的

因此,总而言之,HTML文件将从以下位置更改:

<link rel="stylesheet" href="static/app.css"> 

为此:

<link rel="stylesheet" href="/static/app.css">

Wow!我需要做更多的修补,以确保它修复了所有涉及嵌套路由的问题,但如果没有其他问题,在我的第一次遍历中,它确实修复了所有静态资产请求。为了向其他人澄清:我只需进入我的index.html,在我所有的源文件中预先添加一个
/
。例如,
变成了
<link rel="stylesheet" href="static/app.css"> 
<link rel="stylesheet" href="/static/app.css">