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

Twilio函数运行报错:Cannot use import statement outside a module

解决Twilio函数集成Glide表格的模块导入错误及数据写入问题

一、先解决模块导入错误

Twilio Functions默认采用CommonJS模块规范,以下是具体排查和解决步骤:

  1. 确认依赖安装完整性
    确保在Twilio Functions项目(本地开发目录或控制台依赖管理页)中正确安装@glideapps/tables,优先选择稳定版本(如v0.3.x)。本地开发后部署的话,需确认package.json已包含该依赖,且部署时同步了依赖包。

  2. 规范使用CommonJS导入语法
    禁止混用import和require,直接使用CommonJS写法:

    const { Tables } = require('@glideapps/tables');
    

    若仍报错(可能依赖本身是ES模块),尝试用动态导入:

    exports.handler = async function(context, event, callback) {
      const { Tables } = await import('@glideapps/tables');
      // 后续逻辑代码
    };
    
  3. 切换ES模块模式(可选)
    若依赖仅支持ES模块,可在项目根目录创建package.json并添加:

    {
      "type": "module"
    }
    

    此时所有代码需改用import语法,且Twilio函数的handler也要调整为:

    export async function handler(context, event, callback) {
      // 逻辑代码
    }
    

    注意:此方式可能影响其他依赖兼容性,测试后再部署。

二、Glide表格写入逻辑调试

基于Glide API模板,以下是关键检查点和正确代码示例:

  1. 验证Glide API配置与权限

    • 确认拥有目标表格的编辑权限,API密钥、App ID、表格ID/名称完全正确。
    • 先用Postman等工具手动调用Glide新增行接口,确认能成功写入,排除API本身问题。
  2. Twilio函数中Glide调用的正确示例

    const { Tables } = require('@glideapps/tables');
    
    exports.handler = async function(context, event, callback) {
      // 初始化Glide客户端(从Twilio环境变量取密钥,禁止硬编码)
      const tables = new Tables({
        apiKey: context.GLIDE_API_KEY,
        appId: context.GLIDE_APP_ID
      });
    
      try {
        // 整理短信数据(需与Glide表格列名完全匹配,大小写敏感)
        const smsRecord = {
          发送方: event.From,
          接收方: event.To,
          短信内容: event.Body,
          接收时间: new Date().toISOString()
        };
    
        // 写入Glide表格
        await tables.getTable('SMS日志').addRow(smsRecord);
    
        // 返回Twilio要求的响应
        callback(null, new Twilio.twiml.MessagingResponse());
      } catch (err) {
        console.error('写入失败:', err);
        callback(err);
      }
    };
    
  3. 核心注意事项

    • 用Twilio Functions的环境变量存储Glide API密钥,避免泄露。
    • 确保代码中使用的表格列名与Glide后台的列名完全一致,否则会写入失败。
    • 查看Twilio函数日志面板,捕获并分析具体错误(如权限不足、表格不存在等)。

三、常见坑点排查

  • 动态导入需在handler内部执行,避免Tables未定义的问题。
  • 若Glide API响应慢,可在Twilio函数配置中适当延长超时时间(最大10秒)。
  • 确认Glide API密钥具备写入权限,部分密钥仅支持只读操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:05:18