虽然我已经看到了很多关于Vue3/Vite的SSR,但遗憾的是,它并没有那么容易。由于工作的古怪saml设置,身份验证API在前端中断,但也不能位于单独的域上。我让它工作的唯一方法是在一个端口上运行节点服务器,在另一个端口运行实际站点,然后它们读作"同一域",这样我就可以在成功登录后检索cookie/令牌。
(6年多后,我别无选择,只能接受扭曲前端代码比说服当权者找到更好的方法更容易。(
不管怎样,我知道这是可以做到的。我的Vue2/webpack设置可以做到这一点,尽管它需要一个完整的webpack-conf/env/etc文件。我想避免这种情况,也避免第一次安装时vue/cli的72+错误,所以我尝试了vite——但现在我不知道如何让vite和node一起运行。
开箱即用的dev
脚本是:
"dev": "vite",
运行它让我在终端上看到了这个:
vite v2.7.10 dev server running at:
> Local: http://localhost:3000/
演示页面显示正常,但没有节点服务器。可能是因为服务器希望位于3000端口,并期望vue应用程序位于8080端口。因此,我将节点服务器更改为端口5000,并将config/index.js设置为站点的端口3000。跑步让我着迷:
vite v2.7.10 dev server running at:
> Local: http://localhost:3000/
这基本上没有变化——只是现在网站出现了一个空白页面和一个字符编码错误。我将订单翻转为node server.js vite
,得到:
[HPM] Proxy rewrite rule created: "^/api" ~> ""
zipzipzip on port 5000
这意味着节点服务器正在运行。。。除了localhost:3000/会给我一个Cannot GET /
错误,但转到localhost:5000/会给我应用程序。。。这意味着它(再次(错选了节点服务器。
啊。
如果你需要真正能同台竞技的东西,那么vite是一个糟糕的选择吗?我是否需要回到vue/cli并与它无尽的错误作斗争?或者,我应该坚持安装vue2时的复杂webpack设置,并选择性地更新一些东西,将vue3硬塞进其中吗?
当同一域上的节点服务器在后台处理api调用时,让vue3应用程序占据前台的最佳选择是什么?
提前感谢!
看,我现在正在学习R,所以这是本周完全错过显而易见的东西的借口:
"prod": "NODE_ENV=production & webpack --config build/webpack.config.prod.js",
"start": "node server.js"
也就是说:在生产中,所有内容都来自/dist文件夹。由于dockerfile中没有基于env变量的逻辑,所以只运行prod
,然后运行start
。因此,vue被扁平化为/dist,/dist由节点服务器提供服务。
但是,当在本地工作时(由于auth过程已经很好地解决,因此无需重写节点服务器(,vite服务器会动态地进行编译和服务。当然
简言之:什么都不做,没关系。
这就像vue 101,你会认为在vue工作了几年后,我现在已经把它放下了。
显然你错了。
据我所知,这是目前唯一可行的方法(我可能错了(。在package.json
中,将--watch
标志添加到vite build
行:
"scripts": { "build": "vite build --watch"}
然后运行NodeJS服务器并从那里(使用/dist
文件夹(服务index.html
,而不再从Vite服务。完成。vite build --watch
命令将监视您所做的每一个前端更改并重新生成到/dist
文件夹中,节点将为其提供服务。使用nodemon
命令运行节点服务器,以便自动更新后端的每一项更改。哇!