如何使用webpack导入aws-sdk

Gem*_*low 16 amazon-web-services npm webpack aws-sdk

我在官方发现了这个问题,但看起来他们拒绝回答.所以我只能在SO上提问.这是我的错误和警告日志:

WARNING in ./~/aws-sdk/lib/util.js
Critical dependencies:
40:30-45 the request of a dependency is an expression
43:11-53 the request of a dependency is an expression
 @ ./~/aws-sdk/lib/util.js 40:30-45 43:11-53

WARNING in ./~/aws-sdk/lib ^\.\/.*$
Module not found: Error: Cannot resolve directory '.' in /Users/me/Documents/Sources/my-project/client/node_modules/aws-sdk/lib
 @ ./~/aws-sdk/lib ^\.\/.*$

WARNING in ./~/aws-sdk/lib/api_loader.js
Critical dependencies:
13:15-59 the request of a dependency is an expression
104:12-46 the request of a dependency is an expression
108:21-58 the request of a dependency is an expression
114:18-52 the request of a dependency is an expression
 @ ./~/aws-sdk/lib/api_loader.js 13:15-59 104:12-46 108:21-58 114:18-52

WARNING in ./~/aws-sdk/lib/region_config.json
Module parse failed: /Users/me/Documents/Sources/my-project/client/node_modules/aws-sdk/lib/region_config.json Line 2: Unexpected token :
You may need an appropriate loader to handle this file type.
| {
|   "rules": {
|     "*/*": {
|       "endpoint": "{service}.{region}.amazonaws.com"
 @ ./~/aws-sdk/lib ^\.\/.*$

ERROR in ./~/aws-sdk/lib/api_loader.js
Module not found: Error: Cannot resolve module 'fs' in /Users/me/Documents/Sources/my-project/client/node_modules/aws-sdk/lib
 @ ./~/aws-sdk/lib/api_loader.js 1:9-22

ERROR in ./~/aws-sdk/lib/services.js
Module not found: Error: Cannot resolve module 'fs' in /Users/me/Documents/Sources/my-project/client/node_modules/aws-sdk/lib
 @ ./~/aws-sdk/lib/services.js 1:9-22
Run Code Online (Sandbox Code Playgroud)

有三种类型:

  1. 无法解析模块'fs'

我只需要安装fs就可以解决这个问题.

  1. 需要适当的装载机

好吧,这需要安装json-loader,并将其设置webpack.config.js,但也可以解决.

  1. 关键依赖关系
  2. 找不到模块:错误:无法解析目录'.'

我webpack newbie.So,我不知道如何解决这个问题.有人会帮助我吗?谢谢.

更新:

  1. 找不到模块:错误:无法解析目录'.'

这是我的错,配置文件的扩展缺少了 .

roc*_*ier 6

我找到了这篇博文,为我修好了.

基本上,您需要导入库的内置版本.

所有功劳都归功于作者.这是代码:

require('aws-sdk/dist/aws-sdk');
var AWS = window.AWS;
Run Code Online (Sandbox Code Playgroud)

ES6版本:

import 'aws-sdk/dist/aws-sdk';
const AWS = window.AWS;
Run Code Online (Sandbox Code Playgroud)


Sco*_*ott 2

如果您正在创建节点包,则使用 noParse 方法应该可以工作,因为这会将 webpack 设置为不应用任何解析/加载器。umd创建格式化输出文件/库时,这对我不起作用。

要创建 umd 格式的库,我必须使用加载器来 Browserifyaws-sdk并处理 json 文件。

安装装载机

npm install json-loader --save-dev

npm install transform-loader brfs --save-dev

网页包配置:

module: {
  loaders: [
    { test: /aws-sdk/, loaders: ["transform?brfs"]},
    { test: /\.json$/, loaders: ['json']},
  ]
},
output: {
  library: 'LibraryName',
  libraryTarget: 'umd'
},
resolve: {
  extensions: ['', '.js']
}
Run Code Online (Sandbox Code Playgroud)

替换LibraryName为您自己的命名空间。目前该库将通过构造函数使用,如下所示:

var libObj = new LibraryName();
Run Code Online (Sandbox Code Playgroud)