-
Notifications
You must be signed in to change notification settings - Fork 647
Description
Describe the bug
Bundler(webpack) tries to bundle package @aws-sdk/shared-ini-file-loader even the package is supposed to be Node-only.
Webpack log:
Asset Size Chunks Chunk Names
main.js 5.49 MiB main [emitted] main
Entrypoint main = main.js
[0] multi (webpack)-dev-server/client?http://localhost:9000 (webpack)/hot/dev-server.js ./src/browser/index.js 52 bytes {main} [built]
[./node_modules/webpack-dev-server/client/index.js?http://localhost:9000] (webpack)-dev-server/client?http://localhost:9000 4.29 KiB {main} [built]
[./node_modules/webpack-dev-server/client/overlay.js] (webpack)-dev-server/client/overlay.js 3.51 KiB {main} [built]
[./node_modules/webpack-dev-server/client/socket.js] (webpack)-dev-server/client/socket.js 1.53 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/createSocketUrl.js] (webpack)-dev-server/client/utils/createSocketUrl.js 2.91 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/log.js] (webpack)-dev-server/client/utils/log.js 964 bytes {main} [built]
[./node_modules/webpack-dev-server/client/utils/reloadApp.js] (webpack)-dev-server/client/utils/reloadApp.js 1.59 KiB {main} [built]
[./node_modules/webpack-dev-server/client/utils/sendMessage.js] (webpack)-dev-server/client/utils/sendMessage.js 402 bytes {main} [built]
[./node_modules/webpack-dev-server/node_modules/strip-ansi/index.js] (webpack)-dev-server/node_modules/strip-ansi/index.js 161 bytes {main} [built]
[./node_modules/webpack/hot sync ^\.\/log$] (webpack)/hot sync nonrecursive ^\.\/log$ 170 bytes {main} [built]
[./node_modules/webpack/hot/dev-server.js] (webpack)/hot/dev-server.js 1.59 KiB {main} [built]
[./node_modules/webpack/hot/emitter.js] (webpack)/hot/emitter.js 75 bytes {main} [built]
[./node_modules/webpack/hot/log-apply-result.js] (webpack)/hot/log-apply-result.js 1.27 KiB {main} [built]
[./node_modules/webpack/hot/log.js] (webpack)/hot/log.js 1.34 KiB {main} [built]
[./src/browser/index.js] 1020 bytes {main} [built]
+ 596 hidden modules
ERROR in ./src/shared/utils.js
Module not found: Error: Can't resolve '@aws-sdk/client-s3' in '/Users/zheallan/workspace/aws-sdk-js-tests/src/shared'
@ ./src/shared/utils.js 7:15-44
@ ./src/browser/index.js
ERROR in ./node_modules/@aws-sdk/shared-ini-file-loader/dist/cjs/index.js
Module not found: Error: Can't resolve 'fs' in '/Users/zheallan/workspace/aws-sdk-js-tests/node_modules/@aws-sdk/shared-ini-file-loader/dist/cjs'
@ ./node_modules/@aws-sdk/shared-ini-file-loader/dist/cjs/index.js 6:11-24
@ ./node_modules/@aws-sdk/retry-config-provider/dist/cjs/fromSharedConfigFiles.js
@ ./node_modules/@aws-sdk/retry-config-provider/dist/cjs/defaultProvider.js
@ ./node_modules/@aws-sdk/retry-config-provider/dist/cjs/index.js
@ ./node_modules/@aws-sdk/middleware-retry/dist/cjs/defaultStrategy.js
@ ./node_modules/@aws-sdk/middleware-retry/dist/cjs/index.js
@ ./node_modules/@aws-sdk/client-cognito-identity/dist/es/CognitoIdentityClient.js
@ ./node_modules/@aws-sdk/client-cognito-identity/dist/es/index.js
@ ./src/shared/utils.js
@ ./src/browser/index.js
ℹ 「wdm」: Failed to compile.SDK version number
Any clients on 1.0.0-gamma.3
Is the issue in the browser/Node.js/ReactNative?
Browser/ReactNative(possible)
To Reproduce (observed behavior)
clone https://github.com/aws-samples/aws-sdk-js-tests/tree/issue-1352, yarn & yarn start:browser
Root Cause
TL;DR: ES modules are not included in released for package retry-config-resolver
middleware-retry package is suppose to be runtime-neutural. However it depends on retry-config-provider:
| import { DEFAULT_MAX_ATTEMPTS } from "@aws-sdk/retry-config-provider"; |
Except for
DEFAULT_MAX_ATTEMPTS, the retry-config-provider package also contains Nodejs-specific config resolving chain: aws-sdk-js-v3/packages/retry-config-provider/src/defaultProvider.ts
Lines 29 to 35 in 4386064
| memoize( | |
| chain( | |
| fromEnv(envVarName), | |
| fromSharedConfigFiles(configuration, configKey), | |
| fromStatic(defaultValue) | |
| ) | |
| ); |
If bundler uses ESM for package retry-config-resolver, importing DEFAULT_MAX_ATTEMPTS has nothing to do with defaultProvider. However, for some reason the package only provide CJS module. The 2 artifactes are picked up by bundler together. So bundler will complain about fs within defaultProvider even though it's not used.