插入'的定义.我发表得不对吗?

Cannot read property 'insert' of undefined. Am I not publishing correctly?

本文关键字:定义 插入      更新时间:2023-09-26

我的应用程序工作完美,直到我外部化的集合定义从client/main.js文件到../imports/api/tasks.js文件。

在这个移动之后,我一直在我的浏览器中得到这个错误信息:Uncaught TypeError: Cannot read property 'insert' of undefined在我的浏览器控制台。这个错误消息指向main.js:1206行,即

/myApp
. ./客户/main.js

import { Images } from '../imports/api/tasks.js';
Meteor.subscribe('Images');
FS.Utility.eachFile(event, function(file) {
var teste = Images.insert(file,  function (err, fileObj) {
var insertedIdSession = teste._id;
session.set("insertedBuyId", insertedIdSession);
Images.find().count());
  });

/myApp
. ./进口/api/tasks.js

import { Mongo } from "meteor/mongo";
Images = new FS.Collection("images", {
stores: [new FS.Store.FileSystem("images", {path: "~/uploads"})] });

/myApp
. ./服务器/main.js

import { Images } from '../imports/api/tasks.js';
Meteor.publish('Images', function(){
return Images.find();
});

我已经研究过了,但是没有找到解决这个问题的办法。请指出我错在哪里

提示"Images"未定义

从我看到的你的代码,./imports/api/tasks.js没有导出任何东西,这意味着

import { Images } from '../imports/api/tasks.js';

不会给你任何东西,事实上它会用null替换全局变量Images。所以我认为解决方案是用这个来代替导入:

import '../imports/api/tasks.js';

或者你可以把tasks.js放在/common目录下,它会做同样的工作

您需要导出Images集合以便将其导入到其他文件中,如下所示:

import { Mongo } from "meteor/mongo";
export const Images = new FS.Collection("images", {
  stores: [new FS.Store.FileSystem("images", {path: "~/uploads"})]
});