fix: 使用 createRequire 加载阿里云 SDK,彻底解决 ESM/CJS 互操作问题
All checks were successful
CI/CD Pipeline / Unit Tests (push) Successful in 16s
CI/CD Pipeline / Build & Deploy Test (push) Has been skipped
CI/CD Pipeline / Build & Deploy Production (push) Successful in 1m15s

oven/bun 容器中 node 兼容模式对 CJS __esModule 的解析行为与 Bun 原生模式和
Node.js 均不同,导致 import default 和命名导出均失败。
改用 createRequire + require() 直接走 CJS 路径,在所有运行时下行为一致。
This commit is contained in:
Wang Zhuoxuan 2026-06-03 12:03:08 +08:00
parent ae4e2c37ba
commit 48cbc200d1

View File

@ -1,11 +1,15 @@
import DypnsApi from '@alicloud/dypnsapi20170525'; import { createRequire } from 'node:module';
import { SendSmsVerifyCodeRequest, CheckSmsVerifyCodeRequest } from '@alicloud/dypnsapi20170525/dist/models/model.js';
import { $OpenApiUtil } from '@alicloud/openapi-core'; import { $OpenApiUtil } from '@alicloud/openapi-core';
import { RuntimeOptions } from '@darabonba/typescript'; import { RuntimeOptions } from '@darabonba/typescript';
import { config } from '../../utils/config.js'; import { config } from '../../utils/config.js';
import { AppError, ValidationError } from '../../utils/errors.js'; import { AppError, ValidationError } from '../../utils/errors.js';
const DypnsClient = DypnsApi.default; // 阿里云 SDK 是 Darabonba 生成的 CJS 模块ESM import 在不同运行时下行为不一致
// (Bun / Bun node 兼容模式 / Node.js 对 __esModule 和 exports.default 解析不同)
// 使用 createRequire 直接走 CJS require 路径,绕开所有 ESM/CJS 互操作问题
const require = createRequire(import.meta.url);
const DypnsClient = require('@alicloud/dypnsapi20170525').default;
const { SendSmsVerifyCodeRequest, CheckSmsVerifyCodeRequest } = require('@alicloud/dypnsapi20170525/dist/models/model.js');
function createClient() { function createClient() {
const openApiConfig = new $OpenApiUtil.Config({ const openApiConfig = new $OpenApiUtil.Config({