【问题标题】:Module has no exported member 'AWS'模块没有导出成员“AWS”
【发布时间】:2017-08-18 15:42:22
【问题描述】:

有人能帮我理解命名空间和模块有多么不同吗?

AWS.d.ts

declare module AWS {
  ...
  ...
}
export = AWS

helper.d.ts

export declare namespace Helpers{
  ...
  ...
}

app.component.d.ts

import {Helpers} from 'mystartup_commons'; //<= works fine
import {AWS} from 'aws-sdk';

错误:

错误 /Users/ishandutta2007/Documents/Projects/myproj/src/app/app.component.ts (1,9): 模块'"/Users/is handutta2007/Documents/Projects/myproj/node_modules/aws-sdk/typings/AWS"' 没有导出的成员“AWS”。)

【问题讨论】:

    标签: node.js angular amazon-web-services aws-sdk es6-module-loader


    【解决方案1】:

    问题已在 Github: node_modules/aws-sdk/index has no default export #2654 上解决

    从aws-sdk导入你想使用的模块而不是AWS

    Javascript 示例:

    const aws = require('aws-sdk')
    let s3 = new aws.S3();
    

    打字稿:

    import { config, S3 } from 'aws-sdk';
    import {
      Buckets,
      GetObjectOutput,
      ListBucketsOutput,
      PutObjectRequest 
    } from 'aws-sdk/clients/s3';
    import { createReadStream } from 'fs';
    

    【讨论】:

    • 我们将不胜感激。
    【解决方案2】:

    我认为 aws-sdk 没有默认导出的原因是因为他们希望开发人员只导入他们需要的包。例如

    import { s3 } from 'aws-sdk';

    【讨论】:

      【解决方案3】:

      向节点的定义文件添加引用路径并使用* as 成功了

      app.component.d.ts

      /// <reference path="../../node_modules/@types/node/index.d.ts"/>
      import * as AWS from 'aws-sdk';
      

      【讨论】:

      • 这样做的缺点是它可能会导入所有的 AWS 库并阻止摇树。
      【解决方案4】:
      1. 你有一个错字:modeule 而不是module
      2. 好像你不能导出整个模块。见这里https://www.typescriptlang.org/docs/handbook/modules.html https://www.typescriptlang.org/docs/handbook/namespaces-and-modules.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-20
        • 2017-05-07
        • 1970-01-01
        • 2017-09-09
        • 2022-01-12
        • 2021-12-19
        • 2017-03-27
        相关资源
        最近更新 更多