我正在尝试从子目录中为react应用程序(使用craco创建(提供服务(https://my-domain/app)。按照本指南的步骤,并将nginx-config的位置修改为/app
,我确实得到了静态内容,但一些块在Chrome中生成了以下错误:
未捕获的语法错误:意外的标记"<"。。。main.b5d3f270.chunk.js:1
深入挖掘,我注意到nginx返回的是html页面,而不是纯javascript代码,并且有问题的<
(可能(是<!doctype html>
:的开始
<!doctype html>
<html lang="en">
<head>
...
</head>
<body><noscript>You need to enable JavaScript to run this app.</noscript>
...
<script>
!function...
</script
</body>
只有当我从子文件夹提供应用程序时才会发生这种情况。
知道问题出在哪里吗?
在这里可以找到一个类似的、没有答案的问题。
事实上,问题出在nginx配置上,而不是React。我缺少一个指令,告诉nginx忽略URL的"app"部分,并从不同的目录加载文件。通过以下操作解决了问题:
location /app {
alias /usr/share/nginx/html;
try_files $uri $uri/ /app/index.html =404;
}
这里和这里都讨论了类似的解决方案。