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

如何避免AWS CloudFront Function导出错误并实现单元测试?

解决CloudFront函数关联错误及Jest单元测试问题

一、修复CloudFront关联时的「SyntaxError: Illegal export statement」错误

CloudFront Functions运行环境不支持ES模块的export语法或CommonJS的module.exports导出规则,仅要求定义全局的handler函数即可。

  • 确保函数代码中移除所有export、export default或module.exports相关语句,仅保留全局handler函数,示例代码如下:
    // myfun.js
    function handler(event) {
      return event.request;
    }
    

二、修复Jest测试的「TypeError: handler is not a function」错误

直接用require导入上述代码时,Node.js(Jest运行环境)无法识别全局的handler函数,需添加条件导出逻辑,让代码同时兼容CloudFront生产环境和Jest测试环境:

1. 修改函数代码,添加条件导出

// myfun.js
function handler(event) {
  return event.request;
}

// 仅在Node.js环境下导出handler,供Jest测试使用
if (typeof module !== 'undefined' && module.exports) {
  module.exports = handler;
}

2. 调整Jest测试代码

你的测试逻辑本身无误,确认导入对象为handler即可:

const handler = require('./myfun.js');

test('handler返回正确的request对象', () => {
  const testEvent = { request: {} };
  expect(handler(testEvent)).toStrictEqual(testEvent.request);
});

三、验证方案

  • CloudFront端:上传修改后的函数并关联到分发,不会再出现非法导出语句的错误,函数可正常运行。
  • Jest测试端:执行jest命令,测试将正常执行,不再抛出类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:37:41