我正在使用Next.js 13并利用App Router功能.目前,我有一个从资源文件夹读取文件的API路径,特别是语言文件夹.下面是我的API的 struct :

// app/api/file/[lang]/write/route.ts

import { APIResponseType } from '@/models/api/response';
import { NextRequest, NextResponse } from 'next/server';

type Params = {
  params: {
    lang: string;
  };
};

export async function GET(req: NextRequest, { params: { lang } }: Params) {
  const data = await import(`../../../../../languages/${lang}.json`);
  return NextResponse.json<APIResponseType>({
    message: 'Get language successfully',
    data: data
  });
}

我已经测试了这个API,它的工作情况与预期一致.

然而,我很好奇是否有更有效或推荐的方法来从Next.js资源目录中读取文件.任何见解或替代方法都将受到极大的赞赏.

推荐答案

您可以使用path模块中的解析函数,如下所示.

import path from 'path';

export async function GET(req: NextRequest, { params: { lang } }: Params) {
  const languageFilePath = path.resolve('resources', 'languages', `${lang}.json`);
  const data = await import(languageFilePath);
  ...
}

Javascript相关问答推荐

如何在加载的元数据上使用juserc和await中获得同步负载?

JavaScript文本区域阻止KeyDown/KeyUp事件本身上的Alt GR +键组合

微软Edge Select 间隙鼠标退出问题

Phaser框架-将子对象附加到Actor

我应该在redux reducer中调用其他reducer函数吗?

vscode扩展-webView Panel按钮不起任何作用

. NET中Unix时间转换为日期时间的奇怪行为

如何为我的astro页面中的相同组件自动创建不同的内容?

使用ThreeJ渲染的形状具有抖动/模糊的边缘

元素字符串长度html

在画布中调整边上反弹框的大小失败

如何在JAVASCRIPT中合并两组对象并返回一些键

传递方法VS泛型对象VS事件特定对象

如何使用抽屉屏幕及其子屏幕/组件的上下文?

如何在FiRestore中的事务中使用getCountFromServer

react 路由如何使用从加载器返回的数据

MUI迷你图:如何将$符号添加到MUI迷你图中的工具提示数据

谷歌饼图3D切片

JavaScript:多个图像错误处理程序

递归地将JSON对象的内容上移一级