1

我的动态路由页面 [id] 上有以下代码,我正在尝试将其与 next-i18next 翻译一起使用。但是,在 Vercel 上部署(在本地工作)时会引发错误。我正在尝试使用带有空路径数组的回退函数以某种方式接受所有可能的路径(?)。在我的控制台中,我收到状态码 500 GET 错误和“无法加载静态道具”错误。

当我在其中指定特定 idgetStaticPaths并转到该匹配路径时,它正在工作。但是,我不可能指定数以千计的 id 来使其正常工作。后备不应该解决这个问题,或者我怎样才能克服这个问题?

export async function getStaticPaths() {
  return {
    paths: [], fallback: true
  }
}
export async function getStaticProps(context) {
  return {
    props: {
      params: context.params,
      ...(await serverSideTranslations(context.locale, ["common"])),
    },
  }
}

更新:这是 Vercel 函数日志(xxxxx-values 是我删除的一些 id)

[GET] /_next/data/xxxxxxxxxxx-y/en/packages/490713.json
20:26:37:98
2022-02-28T19:26:39.300Z    xxxxxxxxxxxxxxxxxxxxx   ERROR   Error: ENOENT: no such file or directory, scandir '/var/task/public/locales/en'
    at Object.readdirSync (fs.js:1047:3)
    at getLocaleNamespaces (/var/task/node_modules/next-i18next/dist/commonjs/config/createConfig.js:175:23)
    at /var/task/node_modules/next-i18next/dist/commonjs/config/createConfig.js:181:20
    at Array.map (<anonymous>)
    at getNamespaces (/var/task/node_modules/next-i18next/dist/commonjs/config/createConfig.js:180:44)
    at createConfig (/var/task/node_modules/next-i18next/dist/commonjs/config/createConfig.js:221:29)
    at _callee$ (/var/task/node_modules/next-i18next/dist/commonjs/serverSideTranslations.js:199:53)
    at tryCatch (/var/task/node_modules/regenerator-runtime/runtime.js:63:40)
    at Generator.invoke [as _invoke] (/var/task/node_modules/regenerator-runtime/runtime.js:294:22)
    at Generator.next (/var/task/node_modules/regenerator-runtime/runtime.js:119:21) {
  errno: -2,
  syscall: 'scandir',
  path: '/var/task/public/locales/en',
  page: '/packages/[id]'
}
RequestId: xxxxxxxxxxxxxxxxxxxx Error: Runtime exited with error: exit status 1
Runtime.ExitError

4

1 回答 1

1

我的 next-i18next-config 中缺少这一行

localePath: path.resolve('./public/locales'),

于 2022-03-03T06:34:59.037 回答