MERN项目启动报Mongoose TypeError: 检索pluralization属性失败求助
错误修复方案
1. 核心报错直接修复
你遇到的TypeError: Cannot use 'in' operator to search for 'pluralization' in undefined错误,根源在image_model.js文件的Model定义逻辑:mongoose.model方法的第二个参数要求传入Schema实例,你错误传入了字符串'imageSchema',将其改为你定义的Schema变量即可。
- 原错误代码:
const imageData = mongoose.model('image', 'imageSchema')
- 修复后代码:
const imageData = mongoose.model('image', imageSchema)
2. 其他需要同步修正的代码问题
(1)路由挂载逻辑错误
index.js中app.use挂载路由时,第一个参数应为接口请求前缀,而非路由文件的本地路径:
- 原错误代码:
app.use('./routes/image-route.js', router)
- 修复后示例(前缀可自定义):
app.use('/api/pdf', router)
(2)控制器参数调用错误
image_controller.js的getImage方法存在两处笔误:
- 调用响应状态方法的对象应为
res而非req - catch块的异常变量名不统一
- 原错误代码:
export const getImage = async (req, res) => { try { const allImages = await imageData.find(); req.status(200).json(allImages); console.log('Successfully submitted'); } catch (err) { res.status(404).json({message: error.message}); } }
- 修复后代码:
export const getImage = async (req, res) => { try { const allImages = await imageData.find(); res.status(200).json(allImages); console.log('Query successful'); } catch (error) { res.status(404).json({message: error.message}); } }
后续PDF预览功能提示
上传PDF时将contentType设置为application/pdf,前端获取到文件Buffer后,可转成Blob URL直接赋值给iframe的src属性即可实现预览。
内容的提问来源于stack exchange,提问作者Pleasant Nightmares
相关产品推荐
相关产品推荐

