模块'UploaderModule'导入的意外值'FileUploadModule' - ng2-file-upload

时间:2016-09-29 00:59:33

标签: angular systemjs jspm

使用angular 2.0.1(发布)和ng2-file-upload 1.1.0(最新版本)运行此代码时出现上述错误。我正在使用带有systemjs的jspm来捆绑我的应用程序(所有这些都是最新的)。

import {Component, NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {FileUploadModule} from 'ng2-file-upload';

@Component({
  selector: 'uploader',
  templateUrl: '/build/templates/uploader.html'
})
export class UploaderComponent {
    uploader = new FileUploader({url: '/upload'});
    hasBaseDropZoneOver = false;

    fileOverBase(event) {
        this.hasBaseDropZoneOver = event;
    }

    clearQueue() {
        this.uploader.clearQueue();
    }
}

console.log(FileUploadModule);

@NgModule({
    imports: [CommonModule, FileUploadModule],
    declarations: [UploaderComponent],
    exports: [UploaderComponent]
})
export class UploaderModule {};

如果我检查FileUploadModule的值,它看起来很好,就像它看起来就像我检查过的所有其他模块一样。我的应用程序中还有其他所有功能,但这一部分。这个模块的“意外”是什么?

完整错误:

  

错误:(SystemJS)模块'UploaderModule'(...)导入的意外值'FileUploadModule'

这是FileUploadModule导出的相对部分,对我来说很好看

var FileUploadModule = (function() {
  function FileUploadModule() {}
  FileUploadModule = __decorate([core_1.NgModule({
    imports: [common_1.CommonModule],
    declarations: [file_drop_directive_1.FileDropDirective, file_select_directive_1.FileSelectDirective],
    exports: [file_drop_directive_1.FileDropDirective, file_select_directive_1.FileSelectDirective]
  }), __metadata('design:paramtypes', [])], FileUploadModule);
  return FileUploadModule;
}());
exports.FileUploadModule = FileUploadModule;

更新 受此reverse issue的启发,我将node_module / ng2-file-upload复制到该组件所在的目录,并将我的导入更改为...

import {FileUploadModule} from './ng2-file-upload/ng2-file-upload.js'

......它有效!有任何想法吗?欢呼声。

更新2 我尝试将其导入为文件而不是模块,但将其保留到位,将导入更改为此...

import {FileUploadModule, FileUploader} from '../../../jspm_packages/npm/ng2-file-upload@1.1.0/ng2-file-upload';

......我又回到了错误。

然后我在我的项目根目录中作为ng2-file-upload符号链接到 ../../../ jspm_packages/npm/ng2-file-upload@1.1.0/ng2-file-upload 并将我的导入更改为...

import {FileUploadModule, FileUploader} from '../../../ng2-file-upload/ng2-file-upload';

并且工作正常

所以我认为 jspm / systemjs 知道直接路径实际上是一个npm包,并且必须尝试以不同的方式导入它而不是直接作为文件。作为文件,它可以正确加载模块。

仅仅为了记录,因为我没有在上面指定,我使用的是纯粹的js解决方案(是的,我正在逆势而行,但不是一个打字稿的粉丝)。

0 个答案:

没有答案