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

使用middy中间件时遭遇Unexpected token '.'语法错误求助

解决Middy中间件引入时的SyntaxError: Unexpected token '.'错误

问题分析

从报错信息SyntaxError: Unexpected token '.'和代码来看,问题出在commonMiddleware.js的语法错误上——你代码里的箭头函数符号被错误写成了HTML转义实体=>,而非JavaScript原生的=>,Node.js无法识别这个转义字符,导致加载模块时触发语法错误。

解决方案

1. 修正commonMiddleware.js的语法错误

将文件里的handler =>替换为正确的箭头函数handler =>,修正后的完整代码如下:

const middy = require('@middy/core');
const { httpErrorHandler } = require('@middy/http-error-handler');
const { httpEventNormalizer } = require('@middy/http-event-normalizer');
const { httpJsonBodyParser } = require('@middy/http-json-body-parser');

module.exports = handler => middy(handler)
  .use([
    httpJsonBodyParser,
    httpEventNormalizer,
    httpErrorHandler
  ]);

2. 确保createAuction.js正确使用中间件

你当前的createAuction.js只引入了中间件,但没有定义业务函数并包装导出,补充完整代码示例:

const uuid = require('uuid');
const AWS = require('aws-sdk');
const commonMiddleware = require('../lib/commonMiddleware');

const dynamodb = new AWS.DynamoDB.DocumentClient();

async function createAuction(event, context) {
  // 从请求体获取参数
  const { title } = event.body;
  const now = new Date();

  // 构造拍卖数据
  const auction = {
    id: uuid.v4(),
    title,
    status: 'OPEN',
    createdAt: now.toISOString(),
  };

  // 写入DynamoDB
  await dynamodb.put({
    TableName: process.env.AUCTIONS_TABLE_NAME,
    Item: auction,
  }).promise();

  // 返回响应
  return {
    statusCode: 201,
    body: JSON.stringify(auction),
  };
}

// 用中间件包装业务函数并导出
module.exports.handler = commonMiddleware(createAuction);

验证

修正后重新部署代码,引入commonMiddleware时就不会再触发语法错误,同时Middy的三个中间件会正常生效:

  • httpJsonBodyParser:自动解析请求体为JSON
  • httpEventNormalizer:标准化API Gateway事件格式,避免因缺少字段报错
  • httpErrorHandler:自动捕获并格式化错误响应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:40:27