next.js - Nextjs 模块与独立服务器的联合
问题描述
我正在尝试在 nextjs 应用程序之间使用模块联合(webpack 5)。我从这个例子(两个 nextjs 应用程序)开始,一切都按预期工作。从我的角度来看,问题在于只有当我在同一主机上同时拥有两个应用程序时,这才有效。next.config.js上的相关 webpack 配置部分如下(在其他应用程序中相同)
....
remotes: {
next1: isServer
? path.resolve(
__dirname,
"../next1/.next/server/static/runtime/remoteEntry.js"
)
: "next1",
},
...
如果我只是删除服务器配置,它就不起作用。
可以在 nextjs 应用程序之间使用模块联合,而无需通过文件夹路径配置远程服务器并仅通过 url 引用远程应用程序?
解决方案
这是可能的,但它不适用于 SSR。只需将遥控器留给客户端的全局即可:
// next.config.js
....
remotes: {
next1: "next1",
},
...
创建您的组件并导入远程:
// component.js
const Component = (await import("next1/component")).default
export default Component
最后在您的页面中,延迟加载禁用 SSR 的远程组件:
// mypage.js
import dynamic from 'next/dynamic'
const RemoteComponent = dynamic(
() => import('../components/component.js'),
{ ssr: false }
)
const MyPage = () => (<RemoteComponent />)
export default MyPage
这里有一个工作示例:https ://mf-shell.vercel.app/
推荐阅读
- swift - 在 SwiftUI 中正确设置 PopOverViewController
- laravel - Laravel Nova 使用枢轴显示多对多
- sql - 选择一个文本值而不是另一个
- angular - Angular 6:在编译时将一个项目拆分为多个应用程序
- python - 兑换
到熊猫数据框 - apache-kafka - Kafka 中的消费者滞后
- puppeteer - 如何在 puppeteer 中拦截 *NON* http/s 请求
- docusignapi - 收件人视图过期时的正确流程
- google-apps-script - 使用 Apps 脚本计算来自 Google 表单提交的数字分数
- python - pyocr - LineBoxBuilder 奇怪的行为