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)(??)でエラーが発生しました。

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合体演算子に対応しておらずエラーになっているようです。

修正前

"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はバージョンを上げます。

"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をコピーしました