网站搜索

reactjs - 如何解决这个 MERN 栈 filebase64 错误?


import FileBase from 'react-file-base64';

当我在 VS Code 中将鼠标悬停在三个点的指示器上时,我收到一个错误。

我的设置已经成功(其他输入字段已成功插入到 MongoDB 云)除了插入图像的 filebase64 部分。

模块 "d:/nodejs/memories_project/client/node_modules/react-file-base64/build/build.min" 找不到模块 'react-file-base64' 的声明文件。'd:/nodejs/memories_project/client/node_modules/react-file-base64/build/build.min.js' 隐式具有 'any' 类型。尝试 npm i --save-dev @types/react-file-base64(如果存在)或者添加一个新的声明 (.d.ts) 文件,内容为 declare module 'react-file-base64';ts(7016)

以下是我的 package.json 的依赖项:

"dependencies": {
    "@material-ui/core": "^4.9.10",
    "@material-ui/icons": "^4.9.1",
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.3.2",
    "@testing-library/user-event": "^7.1.2",
    "axios": "^0.19.2",
    "moment": "^2.27.0",
    "react": "^16.12.0",
    "react-dom": "^16.12.0",
    "react-file-base64": "^1.0.3",
    "react-redux": "^7.1.3",
    "react-scripts": "3.4.1",
    "redux": "^4.0.5",
    "redux-thunk": "^2.3.0"
  },

答案#1

如果该值未被保存在数据库中,这意味着它是空的或不存在。检查模型文件(/server/models/)中的字段名称是否与表单文件(/client/src/components/)中的名称相同。

现在错误消息与实际问题无关。

这是因为 react-file-base64 没有提供任何类型定义。要消除该错误,您需要在 .d.ts 文件中声明该模块。

要做到这一点,在你的项目根目录(package.json 所在的位置)创建一个 .d.ts 文件(例如 index.d.ts),并添加以下代码:

declare module 'react-file-base64';

或者你可以全部声明为

declare module '*';

答案#2

我也遇到过类似的问题,并且花了两个多小时尝试调试。问题可能来源于多种原因,我犯的愚蠢错误是当我没有配置多图上传时,却将 multiple 选项设置为 true。

我的代码修复作为一个例子。

<FileBase 
    type="file"
    multiple={false}
    onDone={({base64}) => setListingData({ ...listingData, selectedFile: base64})}
/>