这可以在本地运行,但在 Azure 应用服务上会崩溃。我已经尝试了所有可能的导入管理客户端的方法,但都失败了。我还向我的客户经理提出了支持问题。
auth0-mgmt.ts
import { ManagementClient } from "auth0"
export async function userNickname(userId: string): Promise<string | null> {
const m = new ManagementClient({
domain: process.env.AUTH0_ISSUER_BASE_URL ?? "",
clientId: process.env.AUTH0_MANAGEMENT_CLIENT_ID ?? "",
clientSecret: process.env.AUTH0_MANAGEMENT_CLIENT_SECRET ?? "",
})
try {
const user = await m.users.get({ id: userId, fields: "nickname" })
return user.data?.nickname
} catch (error) {
console.log("Error getting user nickname:", error)
return null
}
}
这是堆栈跟踪:
023-12-13T00:13:17.886814980Z import { ManagementClient } from "auth0"
2023-12-13T00:13:17.886823080Z ^
2023-12-13T00:13:17.886827981Z
2023-12-13T00:13:17.886832481Z SyntaxError: The requested module 'auth0' does not provide an export named 'ManagementClient'
2023-12-13T00:13:17.886837181Z at ModuleJob._instantiate (node:internal/modules/esm/module_job:131:21)
2023-12-13T00:13:17.886841582Z at async ModuleJob.run (node:internal/modules/esm/module_job:213:5)
2023-12-13T00:13:17.886845982Z at async ModuleLoader.import (node:internal/modules/esm/loader:316:24)
2023-12-13T00:13:17.886850682Z at async loadESM (node:internal/process/esm_loader:34:7)
2023-12-13T00:13:17.886858183Z at async handleMainPromise (node:internal/modules/run_main:66:12)
2023-12-13T00:13:17.894145144Z
2023-12-13T00:13:17.894163946Z Node.js v20.9.0
这是我的package.json:
{
...
"private": true,
"type": "module",
...
"dependencies": {
...
"auth0": "^4.2.0",
事实证明,我的 Azure 应用服务盒中有一个来自非常旧的部署的旧文件,名为
auth0.ts
。哇!通过 ssh 进入盒子将其从 wwwroot
中删除可以解决此问题。
现在来弄清楚为什么
az webapp up
部署命令在部署时不删除旧文件!这太疯狂了——有人知道为什么会这样吗?