TypeError:对象(…)不是ReactJS中的函数

TypeError:对象(…)不是ReactJS中的函数,reactjs,firebase,Reactjs,Firebase,我正在尝试在本地主机上运行此web应用程序。对于ReactJS和Firebase来说是相当新的,我不知道如何调试这个错误。我试着用谷歌搜索错误,但仍然找不到解决方法 这是我的index.js。错误来自第17行 1 import { convertLegacyDataProvider } from 'react-admin'; 2 import { FirebaseAuthProvider } from 'react-admin-firebase'; 3 import { Fires

我正在尝试在本地主机上运行此web应用程序。对于ReactJS和Firebase来说是相当新的,我不知道如何调试这个错误。我试着用谷歌搜索错误,但仍然找不到解决方法

这是我的index.js。错误来自第17行

1   import { convertLegacyDataProvider } from 'react-admin';
2   import { FirebaseAuthProvider } from 'react-admin-firebase';
3   import { FirestoreDataProvider } from 'ra-data-firestore';
4   import polyglotI18nProvider from 'ra-i18n-polyglot';
5   import { app, firebaseConfig, db } from '@/vars/firebase';
6   import { USERS } from '@/vars/resources';
7   import messages from '@/vars/i18n';
8   import usersDataProvider from './usersDataProvider';
9
10  const debug = true;
11  const log = (...args) => {
12     if (process.env.NODE_ENV === 'development' && debug) console.log(...args);
13  };
14
15  export const authProvider = FirebaseAuthProvider(firebaseConfig, { app });
16
17  const firestoreDataProvider = FirestoreDataProvider(firebaseConfig, {
18     redundantUpdate: {
19        products: {
20           query: id => db.collectionGroup('slots').where('product.id', '==', id),
21           source: ['name', 'description', 'priceCash', 'image.src'],
22           target: 'product',
23        },
24     },
25  });
26
27  const _usersDataProvider = convertLegacyDataProvider(usersDataProvider);
28
29  export const dataProvider = new Proxy(firestoreDataProvider, {
30     get(target, name) {
31        return (resource, params) => {
32           log(name + ': ', { resource, params });
33           if (resource === USERS && ['getOne', 'create', 'update', 'delete', 'deleteMany'].includes(name)) {
34              return _usersDataProvider[name](resource, params);
35           }
36        
37           return target[name](resource, params);
38        };
39     },
40  });
41
42  export const i18nProvider = polyglotI18nProvider(() => messages, 'en', {
43     allowMissing: true,
44     onMissingKey: key => key,
45  });
编辑:这是我的usersDataProvider.js

1   import { CREATE, DELETE, DELETE_MANY, GET_ONE, UPDATE } from 'react-admin';
2   import { functions, db } from '@/vars/firebase';
3
4   const usersDataProvider = async (type, resource, params) => {
5      switch (type) {
6         case GET_ONE: {
7            const { id } = params;
8            const userSnapshot = await db
9            .collection('users')
10           .doc(id)
11           .get();
12
13           if (userSnapshot.exists) {
14              let data = userSnapshot.data();
15
16              const { client } = data;
17              if (client) {
18                 const clientSnapshot = await db
19                 .collection('clients')
20                 .doc(client.id)
21                 .get();
22
23                 if (clientSnapshot.exists) {
24                    data = {
25                       ...data,
26                       client: {
27                          ...client,
28                          ...clientSnapshot.data(),
29                       },
30                    };
31                 }
32              }
33
34              return { data: { id, ...data } };
35           } else {
36              throw new Error('Id not found');
37           }
38        }
39
40        case CREATE: {
41           const data = await functions.httpsCallable('auth-createUser')(params.data);
42           return data;
43        }
44
45        case UPDATE: {
46           const { id } = params;
47           const data = await functions.httpsCallable('auth-updateUser')({ id, ...params.data });
48           return data;
49        }
50
51        case DELETE: {
52           const { id } = params;
53           await functions.httpsCallable('auth-deleteUser')({ id });
54           return { data: id };
55        }
56
57        case DELETE_MANY: {     
58           const { ids } = params;
59           await ids.map(id => functions.httpsCallable('auth-deleteUser')({ id }));
60           return { data: ids };
61        }
62
63        default:
64           throw Error(`Unhandled method: ${resource} ${type}`);
65        }
66  };
67
68  export default usersDataProvider;


index.js和usersDataProvider.js都在../src/providers/文件夹中。

尝试像这样导入usersDataProvider-{usersDataProvider}

我这样做了,出现了一个错误:
“尝试导入错误:'usersDataProvider'不是从'/usersDataProvider'导出的”。
在我的userDataProvider.js中,userDataProvider作为默认值导出<代码>导出默认用户SDataProviderpost userDataProvider.js?看起来FirestoreDataProvider在ra数据firestore中不存在