Javascript React/NextJS:动态路由:TypeError:无法读取属性';查询';空值-->;警告:不希望服务器HTML包含<;部门>;在<;部门>;

Javascript React/NextJS:动态路由:TypeError:无法读取属性';查询';空值-->;警告:不希望服务器HTML包含<;部门>;在<;部门>;,javascript,reactjs,typescript,next.js,server-side-rendering,Javascript,Reactjs,Typescript,Next.js,Server Side Rendering,我有一个NextJS应用程序,我刚刚在上面做了两件事。1) 我已升级到最新版本的NextJS(9.0.1),2)我已将文件(package.json、pages/、components/等)从项目根目录复制到项目根目录中的新src/app/子目录 不使用动态路由的页面可以很好地加载,但是当我需要从Next使用router对象时会出现问题。我的原始代码(在上述两件事之前运行良好): 这给了我一个错误:TypeError:cannotreadproperty'query'为null 如果我用try/

我有一个NextJS应用程序,我刚刚在上面做了两件事。1) 我已升级到最新版本的NextJS(9.0.1),2)我已将文件(package.json、pages/、components/等)从项目根目录复制到项目根目录中的新src/app/子目录

不使用动态路由的页面可以很好地加载,但是当我需要从Next使用router对象时会出现问题。我的原始代码(在上述两件事之前运行良好):

这给了我一个错误:
TypeError:cannotreadproperty'query'为null

如果我用try/catch来包装它:

let userObj = mockConsts.users[0];

try {
  const router = useRouter();
  userObj = mockConsts.users.filter(
    user => user.username === router.query.username
  )[0];
  console.log("QUERY", router.query);
} catch (e) {
  console.log("ERR", e);
}
客户端和服务器返回两个不同的错误。服务器仍然返回上述错误(
TypeError:cannotreadproperty'query'为null

客户端返回(通过console.log):

路由器记录两次:

ROUTER 
Object { pathname: "/user/[username]", route: "/user/[username]", query: {}, asPath: "/user/[username]", components: {…}, events: {…}, push: field(), replace: field(), reload: field(), back: field()
, … }
[username].tsx:23
ROUTER 
Object { pathname: "/user/[username]", route: "/user/[username]", query: {…}, asPath: "/user/dog", components: {…}, events: {…}, push: field(), replace: field(), reload: field(), back: field(), … }
[username].tsx:23
如您所见,
query
属性现在有了值,而
asPath
属性则有所不同

QUERY Object {  }  [username].tsx:16
Warning: Did not expect server HTML to contain a <div> in <div>. index.js:1
QUERY Object { username: "dog" }  [username].tsx:16
try {
    router = useRouter();
    console.log("ROUTER", router);
    userObj = mockConsts.users.filter(
      user => user.username === router!.query.username
    )[0];
  } catch (e) {
    console.log("ERR", e);
  }
ROUTER 
Object { pathname: "/user/[username]", route: "/user/[username]", query: {}, asPath: "/user/[username]", components: {…}, events: {…}, push: field(), replace: field(), reload: field(), back: field()
, … }
[username].tsx:23
ROUTER 
Object { pathname: "/user/[username]", route: "/user/[username]", query: {…}, asPath: "/user/dog", components: {…}, events: {…}, push: field(), replace: field(), reload: field(), back: field(), … }
[username].tsx:23