如何使用 webpack import aws-sdk
How to use webpack import 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
一共有三种:
- 无法解析模块 'fs'
我只需要安装fs
就可以解决
- 需要合适的加载程序
嗯,这个需要安装json-loader
,在webpack.config.js
里设置,也可以解决。
- 关键依赖项
- 未找到模块:错误:无法解析目录“.”
我是webpack newbie.So,不知道怎么解决。
有人会帮助我吗?谢谢。
更新:
- 未找到模块:错误:无法解析目录“.”
那是我的错,配置文件的扩展名缺少 .
更新(2015-10-20):
aws-sdk
解决这个问题。我可以从 npm 使用它。
谢谢 aws-sdk 团队。
配置:
module: {
noParse: [
/aws/
]
}
用法:
window.AWS 到全局 AWS 对象的引用。
我发现 this blog post 为我修复了它。
基本上你需要导入库的构建版本。
所有功劳归于作者。这是代码:
require('aws-sdk/dist/aws-sdk');
var AWS = window.AWS;
ES6 版本:
import 'aws-sdk/dist/aws-sdk';
const AWS = window.AWS;
如果您正在创建节点包,则使用 noParse 方法应该可行,因为这会将 webpack 设置为不应用任何 parsing/loaders。在创建 umd
格式的输出 file/library.
时,这对我不起作用
要创建一个 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();
AWS SDK 从版本 2.6.1 开始添加了对 webpack
的支持,请参阅 Using webpack and the AWS SDK for JavaScript to Create and Bundle an Application – Part 1 博客 post 描述如何将 aws-sdk
引入 webpack
捆绑。
使用 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 在生成包时会抛出错误。
我在官方找到这个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
一共有三种:
- 无法解析模块 'fs'
我只需要安装fs
就可以解决
- 需要合适的加载程序
嗯,这个需要安装json-loader
,在webpack.config.js
里设置,也可以解决。
- 关键依赖项
- 未找到模块:错误:无法解析目录“.”
我是webpack newbie.So,不知道怎么解决。 有人会帮助我吗?谢谢。
更新:
- 未找到模块:错误:无法解析目录“.”
那是我的错,配置文件的扩展名缺少 .
更新(2015-10-20):
aws-sdk
解决这个问题。我可以从 npm 使用它。
谢谢 aws-sdk 团队。
配置:
module: {
noParse: [
/aws/
]
}
用法:
window.AWS 到全局 AWS 对象的引用。
我发现 this blog post 为我修复了它。
基本上你需要导入库的构建版本。
所有功劳归于作者。这是代码:
require('aws-sdk/dist/aws-sdk');
var AWS = window.AWS;
ES6 版本:
import 'aws-sdk/dist/aws-sdk';
const AWS = window.AWS;
如果您正在创建节点包,则使用 noParse 方法应该可行,因为这会将 webpack 设置为不应用任何 parsing/loaders。在创建 umd
格式的输出 file/library.
要创建一个 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();
AWS SDK 从版本 2.6.1 开始添加了对 webpack
的支持,请参阅 Using webpack and the AWS SDK for JavaScript to Create and Bundle an Application – Part 1 博客 post 描述如何将 aws-sdk
引入 webpack
捆绑。
使用 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 在生成包时会抛出错误。