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})}
/>
