我知道类似的问题已经被问了上千次,但似乎没有一个完全适合我的问题。
我在运行nginx的服务器上部署了一个vue (cli3) prod构建。
推荐的try_files $uri $uri/ /index.html工作,,但只有当我打开/
如果我从/转到/dashboard,那么一切都还能正常工作。
如果我随后刷新(并直接打开/dashboard ),则返回所有资产的index.html、js、css、所有内容(因此表示vendors.js和app.js的Uncaught SyntaxError: Unexpected token < )。
(vue-路由器设置为历史记录更多)
我能做些什么来解决这个问题?一定有什么不对劲..。我还需要改变什么吗?有什么消息吗?我很感谢你的帮助:)
编辑:
我尝试将/$uri /$uri/添加到nginx,以强制从/加载资产,但这也不起作用:/
如果你需要我的信任的任何额外的信息,请随时询问!
发布于 2019-09-09 11:11:12
(令人惊讶的简单)解决方案是:
我把vue publicPath设置为
publicPath: ('./'), (这意味着:资产是相对解析的,因此在/dashboard上,它会查找/dashboard/app.js,这显然是愚蠢的)
在更改为
publicPath: ('/'),,它按预期工作。
很抱歉浪费了大家的时间,也许有一天有人会因为这个问题而感到头疼:)
发布于 2019-09-09 10:20:46
您已经使用应用程序路径直接运行了Vue Js应用程序,例如root /var/www/ path / of /Vuejs;我建议您使用Pm2 start或npm运行Vue Js应用程序,并使用应用程序端口的Nginx反向代理。就像您的VueJs应用程序运行8080一样。下面是参考的Nginx重定向代码。
server {
listen 80;
listen [::]:80;
server_name xyz.com;
location / {
proxy_pass http://0.0.0.0:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
} }https://stackoverflow.com/questions/57851862
复制相似问题