Supabase Edge Functions批量启动时无法识别指定的import map
Supabase Edge Functions批量启动时import map不生效,提示包未映射错误
问题详情
我有两个Edge Functions:create-payment-link和retrieve-payment-link,函数的导入语句如下:
import { serve } from "server" import * as cryptojs from "crypto-js"; import { config } from "dotenv";
functions目录下的import_map.json配置为:
{ "imports": { "server": "https://deno.land/std@0.168.0/http/server.ts", "crypto-js": "https://cdn.skypack.dev/crypto-js", "dotenv": "https://deno.land/x/dotenv/mod.ts" } }
使用以下命令批量启动函数时,函数会加载全局的/home/deno/flag_import_map.json而非指定的functions目录下的配置文件,触发x was not mapped in import map.(x为具体包名)的错误:
npx supabase functions serve --debug --env-file ./supabase/.env --import-map ./supabase/functions/import_map.json
但逐个启动函数时一切正常:
npx supabase functions serve function-name --debug --env-file ./supabase/.env
解决方案
1. 使用绝对路径指定import map
批量启动时,相对路径可能存在解析异常,换成绝对路径确保CLI准确定位配置文件:
npx supabase functions serve --debug --env-file ./supabase/.env --import-map $(pwd)/supabase/functions/import_map.json
2. 脚本批量启动单个函数(临时兼容方案)
如果批量参数传递存在bug,可通过脚本循环启动每个函数,保证每个实例都明确加载指定的import map:
# Bash脚本示例 functions=("create-payment-link" "retrieve-payment-link") for func in "${functions[@]}" do npx supabase functions serve $func --debug --env-file ./supabase/.env --import-map ./supabase/functions/import_map.json & done wait
3. 升级Supabase CLI到最新版本
旧版本CLI可能存在批量启动时的参数传递bug,执行升级命令修复潜在问题:
npm update -g supabase
4. 验证配置文件路径与权限
确认./supabase/functions/import_map.json文件存在、路径拼写正确(注意Linux/macOS环境的大小写敏感),且当前用户拥有可读权限。
内容的提问来源于stack exchange,提问作者neil_ruaro
相关产品推荐
相关产品推荐

