Dra*_*Qum 9 bundle graphql react-native apollo-client
安装新版本的 apollo 客户端后出现此错误。我尝试了其他版本并降级但没有任何结果。我还尝试在 Metro.config.js 中指定解析“cjs”类型的文件(@apollo/client/main.cjs),但什么也没有。
错误
error: Error: While trying to resolve module `@apollo/client` from file `****\src\api\queries\home.js`, the package `****\node_modules\@apollo\client\package.json` was successfully found. However, this package itself specifies a `main` module field that could not be resolved (`****\node_modules\@apollo\client\main.cjs`. Indeed, none of these files exist:
Run Code Online (Sandbox Code Playgroud)
依赖关系
"@apollo/client": "^3.3.2",
"graphql": "^15.4.0",
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?将非常感激!
xji*_*xji 14
如https://github.com/apollographql/apollo-client/blob/main/CHANGELOG.md#apollo-client-354-2021-11-19中所述,解决方案应该是添加
const { getDefaultConfig } = require("metro-config");
const { resolver: defaultResolver } = getDefaultConfig.getDefaultValues();
exports.resolver = {
...defaultResolver,
sourceExts: [
...defaultResolver.sourceExts,
"cjs",
],
};
Run Code Online (Sandbox Code Playgroud)
在你的metro.config.js。
就我而言,我已经module.exports默认生成了一个文件,所以我只需将文件设置为:
const {getDefaultConfig} = require('metro-config');
const {resolver: defaultResolver} = getDefaultConfig.getDefaultValues();
module.exports = {
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: true,
},
}),
},
resolver: {
...defaultResolver,
sourceExts: [...defaultResolver.sourceExts, 'cjs'],
},
};
Run Code Online (Sandbox Code Playgroud)
小智 3
只需添加cjs文件扩展名即可metro.config.js适合我。
根据expo的官方Adding more file extensions to assetExts文档...
const { getDefaultConfig } = require('@expo/metro-config');
const defaultConfig = getDefaultConfig(__dirname);
defaultConfig.resolver.assetExts.push('cjs');
module.exports = defaultConfig;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7127 次 |
| 最近记录: |