我正在使用react-router-dom并且我猜测这是导致问题的原因,但我不知道从哪里开始寻找或如何解决它。我也收到类似的错误Warning: Did not expect server HTML to contain a <nav> in <div>。
正如我所说,我不确定在哪里查看,所以如果您认为某些代码会有所帮助,请告诉我,我会发布它。否则,我可以发布用于执行 SSR 的代码。
编辑:确切错误:Warning: Prophrefdid not match. Server: "/profile/5a073dc44cb45b00125e5c82" Client: "profile/5a073dc44cb45b00125e5c82"
我已经检查了客户端,它/profile/:id不确定它在哪里说没有/,至于<nav>in的另一个错误,我的标题中<div>有一个nav,但我不确定如何“修复”那个.
import React from 'react';
import { renderToString } from 'react-dom/server';
import { StaticRouter } from 'react-router-dom';
import { Provider } from 'react-redux';
import { renderRoutes } from 'react-router-config';
import serialize from 'serialize-javascript';
import { Helmet } from 'react-helmet'; …Run Code Online (Sandbox Code Playgroud) 在 Next.js 项目中,我希望获得一些初始 HTML,其中的内容完全相同<head>:
<link href="..." rel="stylesheet" media="print" onload="this.media='all'" />
Run Code Online (Sandbox Code Playgroud)
我在 Next.js<Head>组件内的代码中包含以下内容:
{ /* @ts-ignore */ }
<link href="..." rel="stylesheet" media="print" onload="this.media='all'" />
Run Code Online (Sandbox Code Playgroud)
如果没有@ts-ignore它,它会说:
类型“DetailedHTMLProps<LinkHTMLAttributes, HTMLLinkElement>”上不存在属性“onload”。您指的是“onLoad”吗?TS(2322)
如果我使用onLoad而不是onload我得到:
类型“string”不可分配给类型“(event: SyntheticEvent<HTMLLinkElement, Event>) => void”。TS(2322)
问题是我得到的服务器端生成的 HTML 有:
<link href="..." rel="stylesheet" media="print" />
Run Code Online (Sandbox Code Playgroud)
只有当页面重新水化后,它才会更新为:
<link href="..." rel="stylesheet" media="all" onload="this.media='all'">
Run Code Online (Sandbox Code Playgroud)
我在 GitHub 上发现了这个问题,但它没有帮助,因为我没有使用 Google Fonts,而是使用 Typography.com,所以我无法使用next-google-fonts: https: //github.com/vercel/next.js/issues/ 12984
我正在考虑ref向该link标签添加 a 并使用 设置属性setAttribute,这希望也能在服务器端工作,但想知道是否有更简单的方法来做到这一点。
我有 2 个应用程序管理外壳和交付管理,我正在使用多区域来处理 NextJs 中的问题。
这两个应用程序都使用带有导航链接的共享标头,但我在从一个区域导航到另一个区域时遇到问题。
Admin-Shell使用 next.config.js 文件在端口 4201 上运行
module.exports = {
basePath: '/main',
rewrites: async() => {
return [{
source: '/delivery-management',
destination: `http://localhost:4202/delivery-management`,
basePath: false,
},
{
source: '/delivery-management/:path*',
destination: `http://localhost:4202/delivery-management/:path*`,
basePath: false,
},
];
},
};
Run Code Online (Sandbox Code Playgroud)
使用 next.config.js 文件在端口 4202 上运行的交付管理
module.exports = {
basePath: '/delivery-management',
rewrites: async() => {
return [{
source: '/main',
destination: `http://localhost:4201/main`,
basePath: true,
},
{
source: '/main',
destination: `http://localhost:4201/main/:path*`,
basePath: true,
},
];
},
}; …Run Code Online (Sandbox Code Playgroud) 我们严重依赖 Angular i18n 进行本地化。通常我们会使用命令为语言环境创建一个文件夹
ng build some-project --localize
Run Code Online (Sandbox Code Playgroud)
这将创建/dist/some-project/en/和/dist/some-project/de/
npm run prerender 仅在 /dist/some-project/browser/ 中输出一个,忽略 --localize 标志。我的问题是:预渲染选项是否仍处于某种测试阶段?我们现在应该避免它,还是我在这里遗漏了一些东西?
我的理解是我必须为每个区域创建单独的静态页面。
这是我的 angular.json
"prerender": {
"builder": "@nguniversal/builders:prerender",
"options": {
"browserTarget": "offer:build:prod",
"serverTarget": "offer:server:prod",
"routes": [
"/"
]
},
"configurations": {
"prod": {}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的个人博客构建一个简单的路线,但是当我从索引页面Error: Route did not complete loading: /contact单击我的路线时,chrome 开发人员工具会引发错误。/contact当我点击博客上的另一条路线时也会发生这种情况,反之亦然。在开发模式下,这有点烦人,每次我更改代码并导航到我的路线时,我的 Chrome 开发人员工具总是会引发此错误。我非常确定我的代码遵循 next.js 官方文档上的所有说明。这是我的代码,我使用 styled-components 来设置我的组件的样式。
const Navbar = () => {
const router = useRouter();
return (
<NavbarItems>
<div className="container">
<span className="nav-logo">
<Link href="/">
<a>MKL.</a>
</Link>
</span>
<ul className="link-container">
<li className="nav-link">
<Link href="/">
<a className={router.pathname === '/' ? 'active' : ''}>Home</a>
</Link>
</li>
<li className="nav-link">
<Link href="/about">
<a className={router.pathname === '/about' ? 'active' : ''}>
About
</a>
</Link>
</li>
<li className="nav-link">
<Link href="/contact">
<a className={router.pathname === '/contact' …Run Code Online (Sandbox Code Playgroud) 我们如何使用react-router 4将客户端渲染react js应用程序转换为服务器端渲染?
我有一个带有 SSR 的 Next.js 应用程序,它依赖于环境变量。当我将应用程序部署到 AWS Amplify 时,会创建 2 个 Lambda 函数。
我在 Amplify 中设置了环境变量,但是,这些变量未在构建期间创建的 Lambda 函数中设置。如果我在函数上手动设置环境变量,它们将在下一次构建期间被删除。
关于这应该如何运作有什么想法吗?
我在 Angular 通用应用程序中设置 GRPC 时遇到问题。
基本上,它会抛出一个错误:
ERROR Error: This environment's XHR implementation cannot support binary transfer.
Run Code Online (Sandbox Code Playgroud)
这个错误正在破坏生产中的应用程序(将其托管在 ubuntu 和 nginx 上),但是在本地环境中它可以工作。
如果我将 Angular 切换为不使用 SSR,那么它就可以正常工作。
我的假设是在 Node Express 服务器中我需要添加对 GRPC 的支持,但我不确定如何实现这一点。
有人遇到同样的问题吗?
谢谢!
我希望我的应用程序中的路线之一不要在服务器端渲染。执行此操作的方法将export const ssr = false在模块脚本中执行或ssr: false按照svelte 文档svelte.config.js中提到的设置进行设置
但即使以两种方式禁用 ssr 后,我仍然在终端中收到错误,例如localStorage is not defined禁用 ssr 时不应出现的错误。
虽然应用程序仍然可以找到。但是每当我在浏览器中重新加载页面时,终端上就会出现此错误
[vite] Error when evaluating SSR module /src/routes/index.svelte:
ReferenceError: localStorage is not defined
Run Code Online (Sandbox Code Playgroud)
svelte.config.js
import preprocess from 'svelte-preprocess';
import adapter from '@sveltejs/adapter-static';
/** @type {import('@sveltejs/kit').Config} */
const config = {
// Consult https://github.com/sveltejs/svelte-preprocess
// for more information about preprocessors
preprocess: preprocess(),
kit: {
ssr: false,
adapter: adapter({
fallback: '200.html'
}),
prerender: {
enabled: false
},
} …Run Code Online (Sandbox Code Playgroud) 我有一个 Next.js 项目,我使用 Prisma 从 Postgresql 读取数据。
我有这样的代码:
const rows = await prisma.receipts.findMany({
where: {
action_receipts: {
// https://www.prisma.io/docs/concepts/components/prisma-client/filtering-and-sorting#filter-on-relations
signer_account_id: {
equals: accountName,
},
},
},
orderBy: {
included_in_block_timestamp: 'desc',
},
take: 2,
});
Run Code Online (Sandbox Code Playgroud)
我经常收到如下错误:
error: PrismaClientUnknownRequestError:
Invalid `prisma.receipts.findMany()` invocation:
Error occurred during query execution:
ConnectorError(ConnectorError { user_facing_error: None, kind: QueryError(Error { kind: Db, cause: Some(DbError { severity: "ERROR", parsed_severity: Some(Error), code: SqlState("42P05"), message: "prepared statement \"s0\" already exists", detail: None, hint: None, position: None, where_: None, schema: None, table: …Run Code Online (Sandbox Code Playgroud) javascript ×5
next.js ×5
reactjs ×5
angular ×2
aws-amplify ×1
aws-lambda ×1
grpc ×1
grpc-web ×1
head ×1
node.js ×1
orm ×1
postgresql ×1
prisma ×1
seo ×1
server-side ×1
svelte ×1
sveltekit ×1
typescript ×1