You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron+Webpack整合s3-sync-client与@aws-sdk/client-s3报错求助

解决Electron+Webpack项目中AWS SDK模块解析错误

问题根源

你遇到的Module parse failed: Unexpected token错误,是因为@aws-sdk相关包使用了ES2020+的可选链(?.)和空值合并(??)语法,而你的Webpack+Babel默认不会转译node_modules目录下的第三方包,导致这些语法无法被解析。

解决步骤

1. 安装必要的Babel插件

如果还没安装,先添加支持新语法的Babel插件:

npm install --save-dev @babel/plugin-proposal-optional-chaining @babel/plugin-proposal-nullish-coalescing-operator

或者直接使用@babel/preset-env(它会自动根据目标环境引入所需插件):

npm install --save-dev @babel/preset-env

2. 修改Webpack配置,让Babel转译AWS SDK相关包

修改你的Webpack配置文件(通常是webpack.config.js),调整babel-loader的规则,让它处理node_modules里的@aws-sdk和s3-sync-client包:

module.exports = {
  // ...其他配置项
  module: {
    rules: [
      {
        test: /\.js$/,
        // 排除node_modules,但不排除@aws-sdk和s3-sync-client相关目录
        exclude: /node_modules(?!\/(@aws-sdk|s3-sync-client))/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env'],
            plugins: [
              '@babel/plugin-proposal-optional-chaining',
              '@babel/plugin-proposal-nullish-coalescing-operator'
            ]
          }
        }
      },
      // ...其他loader规则(比如CSS、图片等)
    ]
  }
};

3. 配置Babel目标环境(可选但推荐)

在你的Babel配置文件(.babelrc或babel.config.json)中,指定Electron的目标版本,让@babel/preset-env更精准地转译代码:

{
  "presets": [
    ["@babel/preset-env", {
      "targets": {
        "electron": "你的Electron版本号"
      }
    }]
  ],
  "plugins": [
    "@babel/plugin-proposal-optional-chaining",
    "@babel/plugin-proposal-nullish-coalescing-operator"
  ]
}

4. 清理缓存并重新构建

最后,清理依赖缓存并重新安装依赖,确保配置生效:

rm -rf node_modules package-lock.json
npm install
npm run start # 或者你的项目启动命令

内容的提问来源于stack exchange,提问作者Heena love Trivedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:53:10