【NextJS】nextjs+qiankun遇ReferenceError: window is not defined

news2024/11/28 14:36:13

实验环境:

  • qiankun: ^2.10.16
  • next: 14.1.0
  • react: ^18.2.0

根据官方手册快速上手教程(链接)

在这里插入图片描述

构建主程序实验代码:

  • qiankun部分:
// file: micro-base/plugins/qiankun/index.ts

import type { AppMetadata } from 'qiankun';
import { registerMicroApps, start } from "qiankun";
import { Microconfig } from "@/plugins/qiankun/microAppsConfig"

export const QianKunStart = function (){
    registerMicroApps(Microconfig);
    start();
}

export default QianKunStart;
  • 页面引用
// file: micro-base/app/page.tsx

import { useEffect } from "react";
import { QianKunStart } from "@/plugins/qiankun"

export default function Home() {
    useEffect(() => {
        console.log('QianKunStart...')
        QianKunStart();
    }, [])

    return (
        <>
            <header>header</header>
            <main>
                <ul>
                    <li><a href="/">首页</a></li>
                    <li><a href="/">子应用</a></li>
                </ul>
                <div id={'mainView'}></div>
            </main>
        </>
    );
}

运行后出现如下错误提示:
在这里插入图片描述

经过几番调试寻找,目前有个来至qiankun issues的解决方案:

  • 【在nextjs+react中使用qiankun当作主应用时报错 ReferenceError: window is not defined】

基于这个方案,调整下上面实验代码:

  • qiankun部分:
// file: micro-base/plugins/qiankun/index.ts

import type { AppMetadata } from 'qiankun';
// import { registerMicroApps, start } from "qiankun"; // 这段删掉
import { Microconfig } from "@/plugins/qiankun/microAppsConfig"

export const QianKunStart = function (){
    // 新增
    if(typeof window !== undefined){
        // 新增
        const { registerMicroApps,start, addGlobalUncaughtErrorHandler } = require('qiankun');

        registerMicroApps(Microconfig, lifeCycles);
        start();
    }
}

export default QianKunStart;

实测可行!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1456047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue+springboot登录与注册功能的实现

①首先写一个登录页面 <template> <div style"background-color: #42b983;display: flex;align-items: center;justify-content: center;height: 100vh"><div style"background-color: white;display: flex;width: 50%;height: 50%;overflow: h…

Camtasia Studio2024中文汉化版下载安装激活图文教程

Camtasia studio 2024是一款功能强大的屏幕录制和视频编辑软件。它可以帮助用户轻松地记录电脑屏幕上的任何操作&#xff0c;并可以将录制的视频进行编辑和制作成高质量的视频教程、演示文稿、培训课程等。 Camtasia studio 2024具有直观的界面和易于使用的工具&#xff0c;包…

软件实例分享,操作简单美发店会员登记记账本vip会员管理系统软件教程

软件实例分享&#xff0c;操作简单美发店会员登记记账本vip会员管理系统软件教程 一、前言 以下软件程序教程以 佳易王美发店会员管理系统软件V16为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、新会员可以直接使用手.机号&#xff0c;不需…

网络安全实验(三)

1.办公区设备可以通过电信和移动两条链路上网&#xff0c;且需要保留一个公网ip不能用来转换 2.分公司设备可以通过两条链路访问到dmz区域的http服务器 3.分公司内部客户端可以通过公网地址访问到内部服务器 4.FW1和FW3组成主备模式的双击热备 5.办公区上网用户限制流量不超…

曲线生成 | 图解B样条曲线生成原理(基本概念与节点生成算法)

目录 0 专栏介绍1 什么是B样条曲线&#xff1f;2 基函数的de Boor递推式3 B样条曲线基本概念图解4 节点生成公式 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细介绍全局规划(图搜索、采样法、智能算法等)…

Vue3+vite搭建基础架构(6)--- 使用vue-router

Vue3vite搭建基础架构&#xff08;6&#xff09;--- 使用vue-router 说明官方文档安装vue-router使用vue-router测试vue-router 说明 这里记录下自己在Vue3vite的项目使用vue-router的过程&#xff0c;不使用ts语法&#xff0c;方便以后直接使用。这里承接自己的博客Vue3vite搭…

第五次作业:LMDeploy 的量化和部署

参考文档&#xff1a;https://github.com/InternLM/tutorial/blob/main/lmdeploy/lmdeploy.md 基础作业&#xff1a; 使用 LMDeploy 以本地对话、网页Gradio、API服务中的一种方式部署 InternLM-Chat-7B 模型&#xff0c;生成 300 字的小故事&#xff08;需截图&#xff09; …

免费的一键伪原创工具哪个好用?有答案

免费的一键伪原创工具对于许多有写作需求的朋友来说是非常实用的&#xff0c;免费的一键伪原创工具不仅可以帮助大家高效率的输出所要的文章内容&#xff0c;而且关键还是免费就能使用的。对于网上比比旨是免费的一键伪原创工具中&#xff0c;我们如何挑选到那个好用的免费一键…

【目标跟踪】提供一种简单跟踪测距方法(c++)

文章目录 一、前言二、c代码2.1、Tracking2.2、KalmanTracking2.3、Hungarian2.4、TrackingInfo 三、调用示例四、结果 一、前言 在许多目标检测应用场景中&#xff0c;完完全全依赖目标检测对下游是很难做出有效判断&#xff0c;如漏检。检测后都会加入跟踪进行一些判断或者说…

Rust-知多少?

文章目录 前言1.使用下划线开头忽略未使用的变量2. 变量解构3.常量4.变量遮蔽&#xff08;shadowing&#xff09;5. 类似println!("{}", x); 为啥加感叹号6.单元类型7. -> 运算符到哪去了&#xff1f;总结 前言 Rust 学习系列&#xff0c;记录一些rust使用小技巧…

QT实现十字线

效果&#xff1a; int resolutionWidth m_resolution.width();int resolutionHeight m_resolution.height();QPixmap pixmap(resolutionWidth, resolutionHeight);pixmap.fill(Qt::transparent);QPainter painter(&pixmap);painter.setPen(QPen(Qt::red, 2)); // 设置画笔…

蓝桥杯DP算法——背包问题(C++)

目录 一、01背包问题 二、完全背包问题 三、多重背包问题 四、多重背包问题&#xff08;优化版&#xff09; 五、分组背包问题 一、01背包问题 01背包问题就是有N件物品&#xff0c;一个空间大小为V的背包&#xff0c;每个物品只能使用一次&#xff0c;使得背包中所装物品…

【软考高级信息系统项目管理师--第十五章:项目风险管理】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;软考高级–信息系统项目管理师 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 第十五章&#xff1a;项目风险管理 风险的属性风险的分类风险管理过程规划风险管理…

企业大宽带服务器用哪里最合适

如今&#xff0c;数字经济的发展速度不断加快&#xff0c;进入数字化跑道的企业&#xff0c;每天都在大量输出、共享、存储数字内容&#xff0c;想要更高效、安全地让用户看到内容&#xff0c;企业的服务器需要满足大带宽、低延时、高并发等要求。 中小企业受限于资金、资源等…

CTA量化策略—基于时间窗口的唐奇安通道法CTA策略

结合唐奇安通道法的核心思想&#xff0c;以及窗口法寻找到的局部高峰点和低谷点&#xff0c;将高点回归得到拟合直线作为上轨&#xff0c;取代唐奇安通道法 中的平行线上轨&#xff0c;同理也将低点回归得到拟合直线作为下轨&#xff0c;以此构建道氏理论 CTA策略。 回测标的&a…

anomalib1.0学习纪实-续3:结合python lightning理思路

一、python lightning python lightning是个好东西&#xff0c;但不见得那么友好。 GPT4给我讲解了他的用法&#xff1a; 二、anomalib的思路 1、 创建一个Lightning Module。 首先&#xff0c;在src\anomalib\models\components\base\anomaly_module.py中&#xff0c; cl…

基于Java SSM框架实现电影售票系统项目【项目源码】

基于java的SSM框架实现电影售票系统演示 SSM框架 当今流行的“SSM组合框架”是Spring SpringMVC MyBatis的缩写&#xff0c;受到很多的追捧&#xff0c;“组合SSM框架”是强强联手、各司其职、协调互补的团队精神。web项目的框架&#xff0c;通常更简单的数据源。Spring属于…

生成式 AI - Diffusion 模型的数学原理(3)

来自 论文《 Denoising Diffusion Probabilistic Model》&#xff08;DDPM&#xff09; 论文链接&#xff1a; https://arxiv.org/abs/2006.11239 Hung-yi Lee 课件整理 文章目录 一、图像生成模型本质上的共同目标二、最大似然估计三、和VAE的关联四、概率计算 一、图像生成模…

LeetCode.590. N 叉树的后序遍历

题目 590. N 叉树的后序遍历 分析 我们之前有做过LeetCode的 145. 二叉树的后序遍历&#xff0c;其实对于 N 叉树来说和二叉树的思路是一模一样的。 二叉树的后序遍历是【左 右 根】 N叉树的后序遍历顺序是【孩子 根】&#xff0c;你可以把二叉树的【左 右 根】想象成【孩子…

MySQL为什么改进LRU算法?

普通LRU算法 LRU = Least Recently Used(最近最少使用): 就是末尾淘汰法,新数据从链表头部加入,释放空间时从末尾淘汰. 当要访问某个页时,如果不在Buffer Pool,需要把该页加载到缓冲池,并且把该缓冲页对应的控制块作为节点添加到LRU链表的头部。当要访问某个页时,如果在…