我有一个客户端-服务器设置,其中客户端(create-react-app)运行在localhost:3000上,服务器是一个构建在node上的express服务器,我正在尝试构建graphql schema-resolvers设置。
我可以在服务器上导入.graphql文件,但是在客户端,我使用的是graphql-tools的设置。
当我试图在前端构建模式解析器时,我导入
import { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';
import { addResolversToSchema } from '@graphql-tools/schema';
import { loadSchema } from '@graphql-tools/load';
...导致此错误:
./node_modules/@graphql-tools/graphql-file-loader/index.mjs无法从非EcmaScript模块导入命名导出“AggregateError”(仅默认导出可用)
经过研究,我发现这是一个与webpack有关的问题。
这个问题有什么解决办法吗?
6条答案
按热度按时间eagi6jfj1#
解决方案是确保在项目目录的根目录下有一个webpack.config.js文件,它看起来像这样:
你也可以看看https://github.com/vanruesc/postprocessing
o7jaxewo2#
确保你的package.json依赖项上有
"react-scripts": "^5.0.1"
,然后使用命令npm install
.由于某种原因,我的react-scripts版本是3.x.x,这就是问题的原因.我也使用了cra.ssm49v7z3#
下面是glahql库的另一个示例
wd2eg0qa4#
试试这个,希望会有帮助
wwtsj6pe5#
为了澄清爱德华的回答:
1.将
.mjs
添加到 webpack.config.js 中的extensions
数组中,这样可以确保在构建时找到相关文件。1.将
{ test: /\.mjs$/, include: /node_modules/, type: 'javascript/auto' }
添加到 webpack.config.js 中的rules
数组中。这会使Webpack将.mjs
文件识别为模块,并更改导入时处理它们的方式。dhxwm5r46#
我在每个**@graphql-tools**子文件夹(merge、mock和schema)中手动将
index.mjs
重命名为index.mjs_old
,并且成功了。