TypeError:对象(…)不是ReactJS中的函数
我正在尝试在本地主机上运行此web应用程序。对于ReactJS和Firebase来说是相当新的,我不知道如何调试这个错误。我试着用谷歌搜索错误,但仍然找不到解决方法 这是我的index.js。错误来自第17行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
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作为默认值导出<代码>导出默认用户SDataProvider代码>post userDataProvider.js?看起来FirestoreDataProvider在ra数据firestore中不存在