如何在 Remix 中使用动态 require?

nus*_*ara 5 node.js typescript reactjs remix.run

在 Remix 中action,我使用动态require来检索不同的 JSON 文件:

export async function action({ request }: { request: Request }) {
  const body = await request.formData();
  const country = body.get("country");

  const cities = require(`~/cities_by_country/${country}.json`);

  return cities;
}

Run Code Online (Sandbox Code Playgroud)

这会产生“应用程序错误”:Error: Cannot find module '~/cities_by_country/Afghanistan.json'

事实证明,动态require才是问题所在。像这样对国家进行硬编码是有效的:

const cities = require(`~/cities_by_country/Afghanistan.json`);
Run Code Online (Sandbox Code Playgroud)

我读到,添加"module": esnext(或 es2020 或 es2022)到 tsconfig.json 将启用动态导入,至少对于 React 来说是这样。我尝试过但得到了相同的结果。

我也阅读了这些文档但无济于事:

我缺少什么?