【问题标题】:How to use webpack import aws-sdk如何使用 webpack 导入 aws-sdk
【发布时间】:2015-07-23 10:10:50
【问题描述】:

我在官方找到了这个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”

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

  1. 需要合适的加载器

嗯,这个需要安装json-loader,并设置在webpack.config.js,也可以解决。

  1. 关键依赖项
  2. 找不到模块:错误:无法解析目录“。”

我是 webpack 新手。所以,我不知道如何解决这个问题。 有人会帮助我吗?谢谢。

更新:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    基本上你需要导入库的构建版本。

    所有功劳归作者所有。代码如下:

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

    ES6 版本:

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

    【讨论】:

    • 我在安装依赖于aws-sdk的aws-amplify时遇到了这个问题,所以问题似乎仍然存在。必须编辑 aws-amplify 代码才能使其正常工作似乎不太好
    【解决方案2】:

    配置:

    module: {
      noParse: [
       /aws/
      ]
    }
    

    用法:

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

    【讨论】:

      【解决方案3】:

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

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

      安装加载器

      npm install json-loader --save-dev

      npm install transform-loader brfs --save-dev

      Webpack 配置:

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

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

      var libObj = new LibraryName();
      

      【讨论】:

      • 错误:configuration.module 有一个未知的属性 'loaders'
      【解决方案4】:

      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 捆绑包中。

      【讨论】:

      • 这就是现在的方法!
      【解决方案5】:

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

        module: {
      loaders: [{
        test: /\.js$/,
        loaders: ['babel'],
      
        exclude: /node_modules/,
      },
      {
            test: /.json$/,
            loaders: ['json']
          }]
      

      }

      只需将 * 作为 AWS 从 'aws-sdk' 导入

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

      【讨论】:

        【解决方案6】:

        更新(2015-10-20):

        aws-sdk 修复此问题。我可以从 npm 使用它。

        感谢 aws-sdk 团队。

        【讨论】:

        • 真的吗?它对我来说仍然是坏的。
        猜你喜欢
        • 2018-12-01
        • 2018-03-02
        • 2016-07-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-01
        • 2016-01-19
        • 2019-01-15
        • 1970-01-01
        相关资源
        最近更新 更多