Peach_Eiton 2022-03-09 03:21 采纳率: 100%
浏览 49
已结题

线上VUE项目的SSR改造过程中,node server.js 时报错 请求支援~

背景

近期领导要求将已上线的VUE项目进行SSR改造,本人一枚小白菜只能网上‘翻箱倒柜’的寻找改造方法,屡遇问屡'百度'

遇到的问题

跟着网上的开源例子,好不容易能够打包出两个json文件了,意外发生了。
在node server.js 时报错了

问题相关代码
// server.js
const express = require("express");
const fs = require("fs");
const path = require("path");

// 创建express实例和vue实例
const app = express();
// 创建渲染器
const { createBundleRenderer } = require("vue-server-renderer");
const serverBundle = require("./dist/vue-ssr-server-bundle.json");
const clientManifest = require("./dist/vue-ssr-client-manifest.json");
const renderer = createBundleRenderer(serverBundle, {
  runInNewContext: false,
  template: fs.readFileSync("./src/index.template.html", "utf-8"), // 宿主模板文件
  clientManifest
});

// 中间件处理静态文件请求
// // 设置静态资源目录
app.use(express.static(path.join(__dirname, "dist")));

// app.use(express.static('../dist/client', {index: false})) // 为false是不让它渲染成dist/client/index.html
// // app.use(express.static('../dist/client'))

// 前端请求什么我都不关心,所有的路由处理交给vue
app.get("/", async (req, res) => {
  // console.log("req--", req);
  // console.log("res--", res);
  try {
    const context = {
      url: req.url,
      title: "ssr test"
    };
    // console.log(req.url);
    const html = await renderer.renderToString(context); // 之前接收vue实例,现在接收上下文
    // console.log(html);
    res.send(html);
  } catch (error) {
    console.log(error);
    res.status(500).send("服务器内部错误" + error);
  }
});

app.listen(8688, () => {
  console.log("渲染服务器启动成功" + "http://localhost:8688");
});
运行结果及报错内容

img

img

请求支援~~

展开全部

  • 写回答

4条回答 默认 最新

  • CSDN专家-showbo 2022-03-09 03:28
    关注

    看这个错误要大修改了,node没有window对象,全局对象为global。而且注意变量作用域,node是模块加载,var申明的局部全局变量不会挂载到global下,这个和浏览器window作用域下var申明的变量变为window属性不同。。

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    Peach_Eiton 2022-03-09 03:50

    是第三方依赖用到了window对象了吧,我看有些文章说可以按需引入打包,但是我按文章说的增加判断再进行引入的话,也有报错,说import要在最顶位置...所以还有什么办法解决呢?

    回复
    CSDN专家-showbo 回复 Peach_Eiton 2022-03-09 03:58

    按需导入也得确定哪个模块使用到了window,然后去掉那个模块。。

    回复
查看更多回答(3条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 4月26日
  • 已采纳回答 4月19日
  • 创建了问题 3月9日

悬赏问题

  • ¥15 KeiI中头文件找不到怎么解决
  • ¥15 QT6将音频采样数据转PCM
  • ¥15 本地安装org.Hs.eg.dby一直这样的图片报错如何解决?
  • ¥15 下面三个文件分别是OFDM波形的数据,我的思路公式和我写的成像算法代码,有没有人能帮我改一改,如何解决?
  • ¥15 Ubuntu打开gazebo模型调不出来,如何解决?
  • ¥100 有chang请一位会arm和dsp的朋友解读一个工程
  • ¥50 求代做一个阿里云百炼的小实验
  • ¥15 查询优化:A表100000行,B表2000 行,内存页大小只有20页,运行时3页,设计两个表等值连接的最简单的算法
  • ¥15 led数码显示控制(标签-流程图)
  • ¥20 为什么在复位后出现错误帧
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部