如果您直接将 createServerOnlyFn(...) 作为参数传递给 createServerFn().handler(),则会生成一个有问题的服务器函数。
这与哪个项目有关?
开始
描述错误
如果您通过一个函数调用, 编译器应该直接转换成创建 ServerFn (. handler ()) 的参数, 构建将会成功, 但会生成一个被损坏的服务器函数 。
- `只创建服务员' 弗恩语
类型错误: 无法在字符串“ da38dc3f0228fb3e...” 上创建属性“ 方法 ”
(dist/server/server.js:237:23) (中文(简体) ).
(dist/server/ server.js:1419:52)故能还五百. 由于它是在 " 装载企业 " 内进行模块评估时投掷的,因此在路由之前失败,不仅导致该路线,而且导致整个应用程序崩溃。
- `创造IsomorphicFn'
/ 已断开
.handler(创建Server OnlyFn(简易))
.handler(创建IsomorphicFn (). server (impl. Client (其他))
//工程(同为JavaScript).
Const 包裹 = 创建 Server OnlyFn( 简易)
.handler(已包装)无例外, 但服务器函数返回“ 未定义 ” 。 如果您先将调用绑定到变量并传递标识符,则两者都会被正确生成.
生成代码
调用器块(`dist/server/assets/router-*.js'):
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? //升起 / 对 创建ServerFn( {方法: "GET" }). handler( 创建SsrRpc ("da38dc3f0228fb3e"...). // 内置服务器只保留 / ID 字符串 创建ServerFn({方法:"GET"}). handler ("da38dc3f0228fb3e"...). // 内置同位素 / 执行覆盖了根 创建ServerFn( {方法: "GET" }). Handler( read OnServer)
客户端捆绑有相同的断档,在这两种情况下,都包含一个本地函数而不是RPC.
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
// 仅内置服务器
.handler (() {) { 扔出错误 ("创建Server OnlyFn () 函数只能调用到服务器上 !")
// 内同位素
.handler ()({ runOn: "客户" })因为...
考生以单人考取,每人有巴贝路. 处理器然后按BuiltInKindHandler Order'在packages/start-plugin-core/src/start-compiller/compiler.ts'中定义的固定顺序运行:
['ServerFn','Middleware','IsomorphicFn','Server OnlyFn','Cleently']] ["服务员只","服务员只","服务员只","服务员只","服务员只"]] 来来来来来来来ServerFn'先行,andleCreateServerFn.ts:445'取代`.handler()'的第一个论点。
handlerFnPath.replaceWith(rpcStub) // rpcStub是创建SsrRpc("").
之后的处理器通过在此替换前所捕获的路径运行. 从那里,他们分成两起:
- `只处理.ts ' 读作`path.node.arguments [0]。 由于路径指向的节点现在为"创建SsrRpc ("<id")"",因此它检索到的是ID的字符串字元. 这使得`.handler ("<id")' 和`create ServerFn'的操作者试图将`extractedFn.method'指定为该字符串。
- `HandleCreateIsomorphicFn.ts'保留了`envCallInfo.firstArgPath?.node'从原始树上被取走,因此`path.replaceWith(innerFn)'用执行本身覆盖了根茎。 RPC接线消失,没有例外。
根本原因在两种情况下都是一样的:
. . . . . . .内容来源: TanStack/router