Next.js如何使用loadFilesSync或glob加载多个文件?

3

我正在尝试使用@graphql-tools/load-files来加载多个文件。我也尝试过使用glob,但同样没有成功。我的文件夹结构如下:

/
/.next
/pages
/pages/api
/pages/api/graphql -> there I have an ApolloServer
/server
/types
/types/userTypes.ts
/types/authTypes.ts

我的想法是将所有的GraphQL类型放置在根目录下的 types 文件夹中,分别保存为不同的文件,并在编译时将它们合并起来:

以下是 graphql.ts 文件的一部分内容。

import path from 'path';
import { mergeTypeDefs } from '@graphql-tools/merge';
import { loadFilesSync } from '@graphql-tools/load-files';

const typesArray = loadFilesSync(path.join(__dirname, '../../types/.*'));
console.log(typesArray);

输出为空的[]数组。在没有使用NextJs时,它按预期工作,因此我猜测NextJs正在处理文件夹结构,但我无法弄清楚。如果有人能提供帮助,那将是非常好的。谢谢。
2个回答

3
你说得没错,Next.js 如何处理文件夹结构的方式是正确的。
请将 path.join(__dirname, '../../types/.*') 替换为 path.join(process.cwd(), 'path'),具体可参考这里:with-typescript-graphql

0

继续接受答案所述:

对于我而言,传递一个硬编码路径是不起作用的。

相反,只需使用通配符模式即可。

loadFilesSync('**/*.gql')

这个示例使用的是 graphql-let 配置,它本质上解析了类似于这样的 glob 模式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接