流星项目 - 上传图片时出现问题

Meteor Project - Issue while uploading image

上传图片时,我在服务器控制台出现以下错误。

I20200123-18:57:34.751(5.5)? Exception while invoking method 'collections.images.insert' TypeError: Cannot read property 'insert' of undefined
I20200123-18:57:34.753(5.5)?     at MethodInvocation.collections.images.insert (imports/api/collections/methods.js:20:31)
I20200123-18:57:34.753(5.5)?     at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1771:12)
I20200123-18:57:34.753(5.5)?     at DDP._CurrentMethodInvocation.withValue (packages/ddp-server/livedata_server.js:719:19)
I20200123-18:57:34.754(5.5)?     at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1234:12)
I20200123-18:57:34.754(5.5)?     at DDPServer._CurrentWriteFence.withValue (packages/ddp-server/livedata_server.js:717:46)
I20200123-18:57:34.754(5.5)?     at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1234:12)
I20200123-18:57:34.754(5.5)?     at Promise (packages/ddp-server/livedata_server.js:715:46)
I20200123-18:57:34.755(5.5)?     at new Promise (<anonymous>)
I20200123-18:57:34.755(5.5)?     at Session.method (packages/ddp-server/livedata_server.js:689:23)
I20200123-18:57:34.755(5.5)?     at packages/ddp-server/livedata_server.js:559:43

在这里,我提供我的代码片段供您参考。

集合构造器服务器代码:

import { FilesCollection } from 'meteor/ostrio:files';

const Collections_Images = new FilesCollection({
    collectionName: 'collections_images',
    storagePath: 'uploads/Collections-Images',
    allowClientCode: false,
    onBeforeUpload(file) {
        // Allow upload files under 10MB, and only in png/jpg/jpeg formats
        if (file.size <= 10485760 && /png|jpg|jpeg/i.test(file.extension)) {
            return true;
        }
        return 'Please upload image, with size equal or less than 10MB';
    }
});

export default Collections_Images;

创建方法代码:

import { Meteor } from 'meteor/meteor';
import { Collections_Images } from './collections_img.js';

Meteor.methods({
  'collections.images.insert'(images) {
    return Collections_Images.insert({
          file : images,
          streams: 'dynamic',
          chunkSize: 'dynamic',
        })
  },
});

客户端js代码:

"change #myFileInput" : function(event){
        const images = event.currentTarget.files[0];
        Meteor.call('collections.images.insert',images, (error) => {
            if(error){
                alert("collection image insert : "+error.message);
            }
            else{
                images=null;
            }
        });
    }

提前致谢。

您从“./collections_img.js”导出默认值

但是你是这样导入的:

import { Collections_Images } from './collections_img.js';

你需要这样导入

import  Collections_Images  from './collections_img.js';

.insert()方法在客户端代码中,不需要通过Meteor.method

发送文件