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

使用Cognito PreSignup Lambda创建用户时遇语法错误该如何解决?

修复Cognito PreSignUp Lambda触发器的SyntaxError错误

问题根源

你错误地将前端React项目的入口文件(index.js)上传作为Cognito PreSignUp Lambda触发器的代码。Lambda运行的是Node.js后端环境,不需要React、ReactDOM这类前端依赖,且默认采用CommonJS模块规范(require/module.exports),而非前端常用的ES模块import/export语法,这直接导致了语法错误。

修复步骤

1. 编写Lambda触发器专用代码

创建一个全新的纯Node.js代码文件,用于处理Cognito的PreSignUp事件,示例代码如下:

exports.handler = async (event, context) => {
  // 在这里实现你的PreSignUp逻辑,比如自动验证用户、添加自定义用户属性等
  console.log("PreSignUp事件详情:", event);
  
  // 必须返回event对象,否则Cognito会终止用户创建流程
  return event;
};
  • 该代码采用Lambda要求的CommonJS规范(exports.handler),避免使用import语句
  • 仅包含后端逻辑,无任何前端依赖

2. 清除错误的前端代码与依赖

不要将React项目的文件(如index.js、App.js、aws-exports.js)或前端依赖包上传到Lambda。Lambda触发器只需要你编写的事件处理代码,除非你的逻辑确实需要特定Node.js库,此时需通过Lambda层或打包工具(如Webpack、esbuild)将依赖一起打包上传。

3. 放弃在Lambda中使用ES模块的尝试

Lambda的Node.js运行时对ES模块(type: module)的支持存在限制,即使添加该配置,也要求所有导入路径必须带完整扩展名(如import App from './App.js'),但这完全不适用于你的场景——因为你根本不该在Lambda触发器中引入前端React代码。

错误原因解析

  • 最初的SyntaxError: Cannot use import statement outside a module:Lambda默认使用CommonJS规范,无法识别前端的import语法
  • 添加type: module后的Module not found:ES模块要求导入路径必须带扩展名,而你的代码中import App from './App'缺少.js后缀,但这本质还是用错了代码场景

内容的提问来源于stack exchange,提问作者MaxxABillion

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:55:14