模块没有导出成员“AWS”。

5

有人能帮我理解命名空间和模块的区别吗?

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/ishandutta2007/Documents/Projects/myproj/node_modules/aws-sdk/typings/AWS" 没有导出成员 "AWS"。

4个回答

13

添加一个引用路径到节点的定义文件中,并使用 * as,问题得以解决。

app.component.d.ts

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

这样做的缺点是可能会导入所有的AWS库,从而破坏树摇。 - eltiare

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

import { s3 } from 'aws-sdk';


0

-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();

Typescript:

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

非常感谢您能提供更详细的解释。 - Ahmad Karimi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接