Meteor 2.2.4连接外部MongoDB出现MongoError问题求助
Meteor 2.2.4 连接外部MongoDB时GridFS报错问题
我们的应用采用Meteor 2.2.4版本,连接外部MongoDB时出现如下错误:
ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\mongodb\lib\utils.js:123 W20230314-16:25:20.031(5.5)? (STDERR) process.nextTick(function() { throw err; }); W20230314-16:25:20.031(5.5)? (STDERR) ^ W20230314-16:25:20.032(5.5)? (STDERR) Error [MongoError]: file with id 6410529725a5697684023bed not opened for writing W20230314-16:25:20.032(5.5)? (STDERR) at Function.MongoError.create (ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\mongodb-core\lib\error.js:31:11) W20230314-16:25:20.032(5.5)? (STDERR) at ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\mongodb\lib\gridfs\grid_store.js:979:33 W20230314-16:25:20.032(5.5)? (STDERR) at handleCallback (ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\mongodb\lib\utils.js:120:56) W20230314-16:25:20.032(5.5)? (STDERR) at ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\mongodb\lib\collection.js:1416:5 W20230314-16:25:20.032(5.5)? (STDERR) at handleCallback (ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\mongodb\lib\utils.js:120:56) W20230314-16:25:20.032(5.5)? (STDERR) at ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\mongodb\lib\cursor.js:683:5 W20230314-16:25:20.033(5.5)? (STDERR) at handleCallback (ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\mongodb-core\lib\cursor.js:171:5) W20230314-16:25:20.033(5.5)? (STDERR) at setCursorNotified (ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\mongodb-core\lib\cursor.js:515:3) W20230314-16:25:20.033(5.5)? (STDERR) at ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\mongodb-core\lib\cursor.js:599:16 W20230314-16:25:20.033(5.5)? (STDERR) at queryCallback (ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\mongodb-core\lib\cursor.js:232:18) W20230314-16:25:20.033(5.5)? (STDERR) at ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\mongodb-core\lib\connection\pool.js:469:18 W20230314-16:25:20.033(5.5)? (STDERR) at processTicksAndRejections (internal/process/task_queues.js:79:11) W20230314-16:25:20.033(5.5)? (STDERR) Emitted 'error' event on GridReadStream instance at: W20230314-16:25:20.033(5.5)? (STDERR) at GridReadStream._error (ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\gridfs-stream\lib\readstream.js:231:8) W20230314-16:25:20.033(5.5)? (STDERR) at ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\gridfs-stream\lib\readstream.js:109:26 W20230314-16:25:20.033(5.5)? (STDERR) at ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\mongodb\lib\gridfs\grid_store.js:236:22 W20230314-16:25:20.033(5.5)? (STDERR) at error (ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\mongodb\lib\gridfs\grid_store.js:1060:5) W20230314-16:25:20.033(5.5)? (STDERR) at ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\mongodb\lib\gridfs\grid_store.js:979:16 W20230314-16:25:20.037(5.5)? (STDERR) at handleCallback (ProjectDockerize\.meteor\local\isopacks\cfs_gridfs\npm\node_modules\mongodb\lib\utils.js:120:56) W20230314-16:25:20.038(5.5)? (STDERR) [... lines matching original stack trace ...] W20230314-16:25:20.038(5.5)? (STDERR) at processTicksAndRejections (internal/process/task_queues.js:79:11) { W20230314-16:25:20.038(5.5)? (STDERR) driver: true W20230314-16:25:20.038(5.5)? (STDERR) }
当前使用的Meteor包列表:
mongo1.11.0*:基于DDP使用MongoDB和Minimongo的适配器cfs:access-point0.1.49*:CollectionFS,添加DDP和HTTP访问点功能cfs:filesystem0.1.2*:CollectionFS的文件系统存储适配器cfs:gridfs0.0.34+:CollectionFS的GridFS存储适配器cfs:standard-packages0.5.10*:Meteor的文件系统,CollectionFS核心包
问题分析与解决办法
这个错误根源是老旧的cfs:gridfs包依赖的MongoDB驱动与Meteor 2.2.4不兼容,旧驱动在处理GridFS文件操作时出现协议或方法调用不匹配,同时目标文件可能存在状态异常。
具体修复步骤:
升级CollectionFS相关包
执行命令更新现有包到兼容Meteor 2.x的版本:meteor update cfs:gridfs cfs:standard-packages cfs:access-point若官方包无更新,可考虑替换为社区维护的分支,或直接迁移到现代文件存储方案。
校验MongoDB版本兼容性
Meteor 2.2.4适配MongoDB 3.6~4.4版本,确保外部MongoDB实例版本在此范围内,避免跨版本协议冲突。修复异常文件状态
针对报错中的文件ID6410529725a5697684023bed:- 登录MongoDB客户端,检查
fs.files和fs.chunks集合中该ID对应的文档是否存在 - 若文档存在但状态异常,可删除后重新上传,或手动修正文件的
length、chunkSize等核心字段
- 登录MongoDB客户端,检查
替换为现代文件存储方案
CollectionFS已停止维护多年,推荐迁移到ostrio:files等活跃维护的包,这类包更好适配新版Meteor与MongoDB,从根源避免兼容性问题。
内容的提问来源于stack exchange,提问作者devlp1990
相关产品推荐
相关产品推荐

