每当我在api目录中保存服务器端文件时,自动刷新发生时就会出现此错误。在查看了关于SO的类似问题之后,似乎当所述集合被导入不止一次时,应该出现此错误。
我遇到的问题是,不仅没有重复的集合导入,这个错误只出现在自动重新加载(每当我保存文件时)。因此,当我启动应用程序并定期使用它时,没有此错误的迹象-表明这可能是开发问题。
我的文件夹结构如下:
/进口/api/books.js
import { Meteor } from 'meteor/meteor';
import SimpleSchema from 'simpl-schema';
export const Books = new Mongo.Collection("books");
/服务器/main.js
import "../imports/api/books.js";
在这种情况下,完整的错误是:
HMR: Error while applying changes: Error: There is already a collection named "books"
at Collection._maybeSetUpReplication (collection.js:314:15)
at new Collection (collection.js:121:8)
at eval (books.js:5:22)
at module (books.js:713:1)
at hot-module-replacement.js?hash=8bbefadb77097ac852d6d5dd3db9f23e39ee3511:415:7
at fileEvaluate (modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:388:7)
at Module.require (modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:270:27)
at require (modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:310:21)
at hot-module-replacement.js?hash=8bbefadb77097ac852d6d5dd3db9f23e39ee3511:602:7
at Set.forEach (<anonymous>)
我现在使用的是Meteor version 2.9.0.
我收到Meteor团队的确认,这实际上是一个已知的错误,他们同时为我提供了一个热修复解决方案(我可以确认解决了这个问题)。
当创建集合的模块被HMR重新运行时,会发生这种情况
- 每次重新运行模块时,它都会创建一个新的集合实例。HMR仅在客户端上使用,因此文件被导入
在修复此错误之前,一个解决方法是将此添加到文件中防止HMR重新运行文件。相反,它将使用热代码Push and reload page.
if (module.hot) {
module.hot.decline();
}