我的应用程序运行正常,直到我将集合定义从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();
});
我已经研究但未能找到解决方案。善意指出我出错的地方。
答案 0 :(得分:2)
它告诉你“图像”没有定义。
从我所看到的你的代码,.. / import / api / toks.js不会导出任何东西,这意味着
import { Images } from '../imports/api/tasks.js';
不会给你任何东西,实际上它会用null替换全局变量Images。所以我认为解决方案是用这个替换导入:
import '../imports/api/tasks.js';
或者您可以将tasks.js放在/ common中,这将完成相同的工作
答案 1 :(得分:1)
您需要导出Images
集合才能将其导入其他文件,例如:
import { Mongo } from "meteor/mongo";
export const Images = new FS.Collection("images", {
stores: [new FS.Store.FileSystem("images", {path: "~/uploads"})]
});