Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CoCo_Code_Op2
next.js
提交
e037c229
N
next.js
项目概览
CoCo_Code_Op2
/
next.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
N
next.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
e037c229
编写于
3月 02, 2021
作者:
J
JJ Kasper
提交者:
GitHub
3月 02, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Ensure optional params are normalized in minimal mode (#22676)
上级
a107dcb7
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
98 addition
and
4 deletion
+98
-4
packages/next/next-server/server/next-server.ts
packages/next/next-server/server/next-server.ts
+4
-4
test/integration/required-server-files/pages/api/optional/[[...rest]].js
...n/required-server-files/pages/api/optional/[[...rest]].js
+7
-0
test/integration/required-server-files/pages/optional-ssg/[[...rest]].js
...n/required-server-files/pages/optional-ssg/[[...rest]].js
+20
-0
test/integration/required-server-files/pages/optional-ssp/[[...rest]].js
...n/required-server-files/pages/optional-ssp/[[...rest]].js
+13
-0
test/integration/required-server-files/test/index.test.js
test/integration/required-server-files/test/index.test.js
+54
-0
未找到文件。
packages/next/next-server/server/next-server.ts
浏览文件 @
e037c229
...
...
@@ -369,10 +369,9 @@ export default class Server {
// interpolate dynamic params and normalize URL if needed
if
(
pageIsDynamic
)
{
let
params
:
ParsedUrlQuery
|
false
=
{}
const
paramsResult
=
utils
.
normalizeDynamicRouteParams
({
...
parsedUrl
.
query
,
...
query
,
})
Object
.
assign
(
parsedUrl
.
query
,
query
)
const
paramsResult
=
utils
.
normalizeDynamicRouteParams
(
parsedUrl
.
query
)
if
(
paramsResult
.
hasValidParams
)
{
params
=
paramsResult
.
params
...
...
@@ -407,6 +406,7 @@ export default class Server {
pathname
:
matchedPathname
,
})
}
Object
.
assign
(
parsedUrl
.
query
,
params
)
utils
.
normalizeVercelUrl
(
req
,
true
)
}
...
...
test/integration/required-server-files/pages/api/optional/[[...rest]].js
0 → 100644
浏览文件 @
e037c229
export
default
(
req
,
res
)
=>
{
console
.
log
(
req
.
url
,
'
query
'
,
req
.
query
)
res
.
json
({
url
:
req
.
url
,
query
:
req
.
query
,
})
}
test/integration/required-server-files/pages/optional-ssg/[[...rest]].js
0 → 100644
浏览文件 @
e037c229
export
const
getStaticProps
=
({
params
})
=>
{
return
{
props
:
{
random
:
Math
.
random
(),
params
:
params
||
null
,
},
revalidate
:
1
,
}
}
export
const
getStaticPaths
=
()
=>
{
return
{
paths
:
[],
fallback
:
true
,
}
}
export
default
function
Page
(
props
)
{
return
<
p
id
=
"
props
"
>
{
JSON
.
stringify
(
props
)}
<
/p
>
}
test/integration/required-server-files/pages/optional-ssp/[[...rest]].js
0 → 100644
浏览文件 @
e037c229
export
const
getServerSideProps
=
({
query
,
params
})
=>
{
return
{
props
:
{
random
:
Math
.
random
(),
query
:
query
,
params
:
params
||
null
,
},
}
}
export
default
function
Page
(
props
)
{
return
<
p
id
=
"
props
"
>
{
JSON
.
stringify
(
props
)}
<
/p
>
}
test/integration/required-server-files/test/index.test.js
浏览文件 @
e037c229
...
...
@@ -448,4 +448,58 @@ describe('Required Server Files', () => {
expect
(
errors
.
length
).
toBe
(
1
)
expect
(
errors
[
0
].
message
).
toContain
(
'
gsp hit an oops
'
)
})
it
(
'
should normalize optional values correctly for SSP page
'
,
async
()
=>
{
const
res
=
await
fetchViaHTTP
(
appPort
,
'
/optional-ssp
'
,
{
rest
:
''
,
another
:
'
value
'
},
{
headers
:
{
'
x-matched-path
'
:
'
/optional-ssp/[[...rest]]
'
,
},
}
)
const
html
=
await
res
.
text
()
const
$
=
cheerio
.
load
(
html
)
const
props
=
JSON
.
parse
(
$
(
'
#props
'
).
text
())
expect
(
props
.
params
).
toEqual
({})
expect
(
props
.
query
).
toEqual
({
another
:
'
value
'
})
})
it
(
'
should normalize optional values correctly for SSG page
'
,
async
()
=>
{
const
res
=
await
fetchViaHTTP
(
appPort
,
'
/optional-ssg
'
,
{
rest
:
''
,
another
:
'
value
'
},
{
headers
:
{
'
x-matched-path
'
:
'
/optional-ssg/[[...rest]]
'
,
},
}
)
const
html
=
await
res
.
text
()
const
$
=
cheerio
.
load
(
html
)
const
props
=
JSON
.
parse
(
$
(
'
#props
'
).
text
())
expect
(
props
.
params
).
toEqual
({})
})
it
(
'
should normalize optional values correctly for API page
'
,
async
()
=>
{
const
res
=
await
fetchViaHTTP
(
appPort
,
'
/api/optional
'
,
{
rest
:
''
,
another
:
'
value
'
},
{
headers
:
{
'
x-matched-path
'
:
'
/api/optional/[[...rest]]
'
,
},
}
)
const
json
=
await
res
.
json
()
expect
(
json
.
query
).
toEqual
({
another
:
'
value
'
})
expect
(
json
.
url
).
toBe
(
'
/api/optional?another=value
'
)
})
})
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录