如何使用webpack导入aws-sdk

时间:2015-07-23 10:10:50

标签: amazon-web-services npm webpack aws-sdk

我在官方发现了issues,但看起来他们拒绝回答。 所以我只能在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

有三种类型:

  1. 无法解析模块'fs'
  2. 我只需安装fs即可解决此问题。

    1. 需要合适的装载程序
    2. 嗯,这需要安装json-loader,并在webpack.config.js中设置,但也可以解决。

      1. 关键依赖关系
      2. 找不到模块:错误:无法解析目录'。'
      3. 我webpack newbie.So,我不知道如何解决这个问题。 有人会帮助我吗?感谢。

        更新:

        1. 找不到模块:错误:无法解析目录'。'
        2. 这是我的错,配置文件的扩展名缺少.

6 个答案:

答案 0 :(得分:6)

我发现this blog post为我修复了它。

基本上你需要导入库的内置版本。

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

require('aws-sdk/dist/aws-sdk');
var AWS = window.AWS;

ES6版本:

import 'aws-sdk/dist/aws-sdk';
const AWS = window.AWS;

答案 1 :(得分:3)

配置:

module: {
  noParse: [
   /aws/
  ]
}

用法:

window.AWS指向全局AWS对象的引用。

答案 2 :(得分:2)

如果要创建节点包,则使用no​​Parse方法应该有效,因为这会将webpack设置为不应用任何解析/加载器。在创建let image = UIImage(named: "imageInBundle.png") imageView.image = image 格式化的输出文件/库时,这对我不起作用。

要创建一个umd格式的库,我必须使用加载器来浏览umd并处理json文件。

安装加载器

aws-sdk

npm install json-loader --save-dev

Webpack配置:

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'] } 替换为您自己的命名空间。目前,库将通过构造函数使用,如下所示:

LibraryName

答案 3 :(得分:2)

AWS SDK从版本2.6.1开始添加了对webpack的支持,请参阅Using webpack and the AWS SDK for JavaScript to Create and Bundle an Application – Part 1博客文章,了解如何将aws-sdk纳入webpack捆绑包。

答案 4 :(得分:0)

使用npm install json-loader --save-dev 将以下代码添加到webpack.config.js

  module: {
loaders: [{
  test: /\.js$/,
  loaders: ['babel'],

  exclude: /node_modules/,
},
{
      test: /.json$/,
      loaders: ['json']
    }]

}

只需从' aws-sdk'

导入*作为AWS

请注意,我们指定了一个加载器来告诉webpack如何处理导入JSON文件,在本例中是使用我们之前安装的json-loader。默认情况下,webpack仅支持JavaScript,但也使用加载器添加对导入其他文件类型的支持。 AWS开发工具包大量使用JSON文件,因此如果没有这些额外配置,webpack将在生成捆绑包时抛出错误。

答案 5 :(得分:-3)

更新(2015年10月20日):

aws-sdk解决了这个问题。我可以从npm使用它。

谢谢,aws-sdk团队。