这是使用 CommonJS 的代码:
const { createClient } = require('@supabase/supabase-js');
exports.handler = async (context, event, callback) => {
const supabaseUrl = 'https://teuytpiznwvvdhrkycqb.supabase.co';
const supabase = createClient(supabaseUrl, context.SUPABASE_KEY);
这是使用 ESM 抛出错误的代码:
export const handler = async (context, event, callback) => {
const { createClient } = await import('@supabase/supabase-js');
const supabaseUrl = 'https://teuytpiznwvvdhrkycqb.supabase.co';
const supabase = createClient(supabaseUrl, context.SUPABASE_KEY);
如果我将导入移出我的函数,那么 Twilio 会抛出相同的错误
const { createClient } = import('@supabase/supabase-js');
export const handler = async (context, event, callback) => {
// const { createClient } = await import('@supabase/supabase-js');
const supabaseUrl = 'https://teuytpiznwvvdhrkycqb.supabase.co';
const supabase = createClient(supabaseUrl, context.SUPABASE_KEY);
Twilio UI 使用 Node v18
我也有这个有效的代码,Twilio 文档说支持 ESM
exports.handler = 异步函数(上下文、事件、回调){ const twilioClient = context.getTwilioClient();
Twilio 函数仅支持 CJS [1]。您可以使用动态导入,如下面的代码片段所示
exports.handler = async (context, event, callback) => {
const { createClient } = await import('@supabase/supabase-js');
const supabaseUrl = 'https://abc123.supabase.co';
const supabase = createClient(supabaseUrl, context.SUPABASE_KEY);
您仍然可以在本地编写ESM代码;但是,在将其上传到 Twilio Functions 之前,您需要将其转换或捆绑为 CJS。
我怀疑这不是您希望的答案,但我希望它有帮助。
罗布