我目前正在使用“react-admin”开发一个管理面板,它在我的本地运行良好,但是一旦我将应用程序上传到 Heroku,构建就会失败并出现以下错误:“致命错误:接近堆限制的无效标记压缩分配失败 - JavaScript 堆内存不足”
我import { Admin } from 'react-admin';通过设置一个只有“react-admin”包和一个简单的 Admin 导入的干净项目来将问题缩小到最初的问题。一旦我尝试使用该组件,部署就会失败,并显示“堆内存不足”错误。
有没有其他人遇到过这个问题?
这是我的 package.json:
{
"name": "mrewards_admin",
"version": "0.1.0",
"private": true,
"dependencies": {
"axios": "^0.19.0",
"deepmerge": "^4.2.2",
"prop-types": "^15.7.2",
"react": "^16.12.0",
"react-admin": "^3.0.2",
"react-dom": "^16.12.0",
"react-scripts": "3.2.0"
},
"engines": {
"node": "13.0.1"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [ …Run Code Online (Sandbox Code Playgroud) 我认为在许多API中很常见,当我们为List请求的一部分时,我们返回记录的字段子集,当它是对其Show端点的单记录请求时,返回更多细节.
似乎react-admin在加载Show页面时尝试避免再做第二个请求(可能会重新使用List中的记录数据?),这会导致数据丢失.刷新页面修复了这个问题,但我想知道是否有一个设置会在每个Show页面加载时强制执行GET_ONE请求.
我正在尝试在打字稿中设置一个 react-admin 应用程序,但我不太清楚如何导入 react-admin。它给了我(简单的)错误说
"Could not find a declaration file for module 'react-admin'.
'.../node_modules/react-admin/lib/index.js' implicitly has an 'any' type.
Try `npm install @types/react-admin` if it exists or add a new declaration (.d.ts)
file containing `declare module 'react-admin';`"
Run Code Online (Sandbox Code Playgroud)
@types/react-admin 不是一个有效的包,但我在 github 或 stackoverflow 上找不到其他人抱怨这个。我错过了什么吗?据我所知,大部分内容已经迁移到 typescript。
编辑:发现这实际上引用了 ts 的问题。然而,自从他们说“这需要几个月”已经过去了 5 个月
https://marmelab.com/react-admin/Inputs.html#arrayinput 示例涵盖了您拥有对象数组的情况:
backlinks: [
{
date: '2012-08-10T00:00:00.000Z',
url: 'http://example.com/foo/bar.html',
},
{
date: '2012-08-14T00:00:00.000Z',
url: 'https://blog.johndoe.com/2012/08/12/foobar.html',
}
]
Run Code Online (Sandbox Code Playgroud)
是否可以让它只使用一个字符串数组?
backlinks: ['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud) 我有一个选项卡式表单,第二个选项卡将从后端检索列表,类似于react-admin官方演示(例如,帖子有很多评论)。问题是当我切换选项卡时,总是有第二个选项卡(即评论列表)的后端调用。 我如何避免它而只加载一次? 因为我在第二个选项卡上有分页,所以如果我切换选项卡,则分页将更改为第一页。
先感谢您!
<TabbedForm>
<FormTab label="Post">
<TextInput source="name"/>
</FormTab>
<FormTab label="Comment">
{/* This tab should fetch data only once if I switch tabs */}
<ReferenceManyField
pagination={<Pagination/>}
reference="comments"
target="id"
perPage={5}
addLabel={false}
>
<Datagrid>
<TextField source="name" />
<EditButton />
<DeleteButton undoable={false}/>
</Datagrid>
</ReferenceManyField>
</FormTab>
</TabbedForm>
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 react-admin v3 应用程序中使用 Auth0 实现身份验证。我需要实现一个authProvider与 Auth0 对话的对象。这听起来像是应该在某处可用的东西,但我能找到的最接近的是https://github.com/alexicum/merge-admin/blob/master/src/Auth/index.js,它大约有 2 岁(从那时起,SDK 发生了变化)。
是否有 Auth0 authProvider 可以重用的地方,还是我必须自己实现?
谢谢!
在 react-admin 3.2.3 编辑表单中,我需要显示来自不同资源的相关记录(作业记录列表)。这种关系有点奇怪,需要字符串解析,所以我不能只使用内置的ReferenceField. 这就是为什么我试图getList使用useGetList钩子调用 dataProvider 的函数。不幸的是,我在表单渲染时遇到错误:
dataProvider 抛出了一个错误。它应该返回一个被拒绝的 Promise
这是我的自定义数据提供程序的 getList 函数:
getList: (resource, params) => {
console.log('DataProvider.GetList ');
console.log(resource);
console.log(params);
const { page, perPage } = params.pagination;
const { field, order } = params.sort;
const query = {
...fetchUtils.flattenObject(params.filter),
_sort: field,
_order: order,
_start: (page - 1) * perPage,
_end: page * perPage,
};
const url = `${getUrl(resource)}?${stringify(query)}`;
const paging = supportsPaging(resource);
return httpClient(url).then(
({ headers, json }) => {
var result …Run Code Online (Sandbox Code Playgroud) 我正在使用 Nextjs 使用 React 创建一个应用程序。
我想真正为我的 BO 使用 react-admin。我尝试了测试示例,并通过 react 完美运行。不幸的是,当我试图在下一个 js 中包含一些代码时 - 它不起作用。
我创建了/admin/dashboard.tsx文件,并添加了下一个代码(以前由我自己测试过 - 工作代码):
import * as React from 'react';
import PostIcon from '@material-ui/icons/Book';
import UserIcon from '@material-ui/icons/Group';
import { Admin, Resource, ListGuesser } from 'react-admin';
import jsonServerProvider from 'ra-data-json-server';
import { PostList, PostEdit, PostCreate, PostShow } from './react-admin/posts';
import { UserList } from './react-admin/users';
import Dashboard from './react-admin/Dashboard';
import authProvider from './react-admin/AuthProvider';
const App = () => (
<Admin
dataProvider={jsonServerProvider(
'https://jsonplaceholder.typicode.com' …Run Code Online (Sandbox Code Playgroud) react-admin ×10
reactjs ×5
javascript ×2
node.js ×2
arrays ×1
auth0 ×1
heap-memory ×1
heroku ×1
memory ×1
next.js ×1
typescript ×1
yarnpkg ×1