babelでnull合体演算子エラーが発生する

babelでnull合体演算子エラーが発生する AWS

AWS lambdaで使用するnodeのバージョンを18にアップデートしました。

node18ではAWS lambdaに含まれるAWS SDK for JavaScriptがv3になっています。そのため、ローカル環境で使用するAWS SDK for JavaScriptもv2->v3に変更しました。

その際、 webpackから使用しているbabelのトランスコンパイルでnull合体演算子(Nullish coalescing operator)(??)でエラーが発生しました。

1
2
3
4
5
6
7
8
ERROR in C:/Users/hoge/fuga/node_modules/@aws-sdk/middleware-logger/dist-es/loggerMiddleware.js 13:53
Module parse failed: Unexpected token (13:53)
You may need an appropriate loader to handle this file type.
|             clientName,
|             commandName,
>             input: (overrideInputFilterSensitiveLog ?? inputFilterSensitiveLog)(args.input),
|             output: (overrideOutputFilterSensitiveLog ?? outputFilterSensitiveLog)(outputWithoutMetadata),
|             metadata: $metadata,

どうやらwebpackやbabelのバージョンが古いために、ES2020で導入されたnull合体演算子に対応しておらずエラーになっているようです。

修正前

1
2
3
4
5
6
7
8
9
10
11
"devDependencies" : {
    "@babel/core" : "~7.1.x",
    "@babel/preset-env" : "~7.1.x",
    "babel-core" : "~7.0.0-bridge.x",
    "babel-jest" : "~23.6.x",
    "babel-loader" : "~8.0.x",
    "aws-sdk": "~2.323.x",
    "webpack" : "~4.16.x",
    "webpack-cli" : "~3.1.x",
    "terser-webpack-plugin" : "~1.1.x"
}

修正後

terser-webpack-pluginはwebpack5からは同梱されいるので削除します。bable、webpack、aws-sdkはバージョンを上げます。

1
2
3
4
5
6
7
8
9
10
11
12
"devDependencies" : {
    "@babel/core" : "~7.21.0",
    "@babel/preset-env" : "~7.20.2",
    "babel-core" : "~7.0.0-bridge.0",
    "babel-jest" : "~29.4.3",
    "babel-loader" : " ~8.3.0",
    "@aws-sdk/client-s3" : "~3.282.0",
    "@aws-sdk/signature-v4-crt" : "~3.282.0",
    "aws-crt" : "~1.15.9",
    "webpack" : "~5.74.0",
    "webpack-cli" : "~5.0.1"
}

node_modulesの中を一旦全て削除してから、以下を実行することでエラーが無くなりました。

npm i

タイトルとURLをコピーしました