使用后端ish节点服务器运行Vue3/Vite



虽然我已经看到了很多关于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命令运行节点服务器,以便自动更新后端的每一项更改。哇!

最新更新