- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在将timerTrigger类型函数部署到Azure函数应用程序。这是用 typescript 编写的并使用 Node 运行时。该函数本身一直在工作,直到我们添加了一个依赖项,sentry sdk(用于 cron 监视器检查),这听起来就像安装模块一样简单,确保将其作为依赖项添加到 package.json 文件中,在函数文件中导入模块并做了。在本地它工作得很好,一旦发布它就一直提示找不到某些模块。
现在奇怪的是,它一直提示“其他”模块,例如“调试”和“https-proxy-agent”。我还没有验证过,但也许它们是我们添加的模块的依赖项?
我是否缺少一个步骤?是不是没有安装所有依赖项?
我们在代码中按如下方式导入包。
import * as Sentry from '@sentry/node'
我们正在使用命令行工具发布该函数。
func azure functionapp publish
我确实找到了similar question on SO ,但是解决方案不是很清楚,我们也没有使用 vscode 来部署/发布。
完整功能代码:
import { AzureFunction, Context } from '@azure/functions'
import { Timer } from '@azure/functions/types/timer'
import * as Sentry from '@sentry/node'
const partnerImport: AzureFunction = async function (
context: Context,
timer: Timer
): Promise<void> {
const IS_SENTRY_CRON_MONITORING_ENABLED = process.env.IS_SENTRY_CRON_MONITORING_ENABLED
const API_SERVER_AUTH_TOKEN = process.env.API_SERVER_AUTH_TOKEN
const API_SERVER_URL = process.env.API_SERVER_URL
const NODE_ENV = process.env.NODE_ENV
let sentryCheckInId;
const timeStamp = new Date().toISOString()
if (timer.isPastDue) {
context.log.verbose('Timer is running a bit later', timeStamp)
}
Sentry.init({
dsn: "https://...sentry.io...",
environment: NODE_ENV,
});
context.log.verbose('Starting partner-import', timeStamp)
if (!API_SERVER_AUTH_TOKEN) {
throw new Error(`API_SERVER_AUTH_TOKEN not set ${timeStamp}`)
}
if (!API_SERVER_URL) {
throw new Error(`API_SERVER_URL not set ${timeStamp}`)
}
if (IS_SENTRY_CRON_MONITORING_ENABLED) {
sentryCheckInId = Sentry.captureCheckIn({
monitorSlug: "***",
status: "in_progress",
});
}
context.log.verbose(`Sending POST request to ${API_SERVER_URL}/api/jobs/partner-import`, timeStamp)
const response = await fetch(`${API_SERVER_URL}/api/jobs/partner-import`, {
headers: {
authorization: API_SERVER_AUTH_TOKEN,
},
method: 'POST',
})
if (!response.ok) {
if (IS_SENTRY_CRON_MONITORING_ENABLED) {
Sentry.captureCheckIn({
checkInId: sentryCheckInId,
monitorSlug: "***",
status: "error",
});
}
// It will retry [maxRetryCount] times.
// See the retry settings in ./function.json
throw new Error(
`HTTP Error API Server returned: ${response.status} ${response.statusText}, ${timeStamp}`
)
} else {
context.log.verbose(`Successfully send POST request to API server`, timeStamp)
if (IS_SENTRY_CRON_MONITORING_ENABLED) {
// 🟢 Notify Sentry your job has completed successfully:
Sentry.captureCheckIn({
checkInId: sentryCheckInId,
monitorSlug: "***",
status: "ok",
});
}
}
}
export default partnerImport
包.json
{
"name": "functions",
"version": "0.1.0",
"description": "",
"scripts": {
"build": "tsc",
"watch": "tsc -w",
"prestart": "npm run build",
"start:host": "func start",
"start": "npm run start:host & npm run watch",
"emulator": "azurite --silent",
"test": "echo \"No tests yet...\""
},
"dependencies": {
"@sentry/node": "^7.58.1"
},
"devDependencies": {
"@azure/functions": "^3.0.0",
"@shared/eslint-config-node": "^0.0.0",
"@shared/prettier-config": "*",
"@types/node": "18.x",
"azure-functions-core-tools": "^4.x",
"tsconfig": "*",
"typescript": "^4.0.0"
}
}
//编辑/更新
还尝试使用 VScode 上传/部署函数应用程序。这将其更改为包文件部署,因此我无法在 azure 控制台中查看该功能。它也没有列在 VScode 插件中的“函数”下,但它确实显示在“工作区”>“函数”下。 (从我点击部署的地方)
嗯,我不确定这有什么不同,但可能是由于通过“包文件”或其他方式进行部署所致?因为如果我现在使用func azure functionapppublish..
,它确实将其列在函数下。还不确定这有什么不同。
最佳答案
检查以下故障排除步骤是否有助于解决问题:
删除 node_modules
文件夹和 package-lock.json
文件。
运行npm install
以重新安装所有依赖项。这是为了确保所有依赖项都正确安装并且它们之间没有冲突。
我觉得 Sentry 依赖项正在影响其他依赖项,从而导致无法找到模块错误。
检查安装的 Sentry 依赖项的版本是否与项目中的其他依赖项兼容。
在项目根目录下运行npm ls
来检查依赖的兼容性:
我创建了一个简单的 TimerTrigger 函数并安装了 Sentry 包。
我可以毫无问题地进行部署,如下所示:
关于node.js - Azure函数( Node 运行时)找不到模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76720882/
似乎有很多方法可以在 Azure 中自动使用 PowerShell。由于 ARM 模板是最新的,Azure 中的其他 PowerShell 选项是否已过时?这些工具/脚本之间有什么区别: Azure
我正在开发一个将托管在 Azure 中的 Web API。我想使用 Azure 诊断将错误记录到 Azure 表存储中。在经典门户中,我可以将日志配置为转到 Azure 表存储。 Classic Po
Azure 文件存储事件可以触发 Azure WebJob 或 Azure Function 吗? 例如,在文件夹“/todo/”中创建文件时。 最佳答案 我们目前没有任何 Azure 文件绑定(bi
我需要创建一个逻辑应用程序,我的要求是,我需要从 azure data Lake Gen2 文件夹迁移 json 文件,并根据某些值需要将该 json 转换为 xml,然后将其发送到 SQL。 因此,
我使用 VS Code 创建了 1 个 node.js 和 1 个 java Azure Function 当我使用 VS Code 将这两个函数部署到 Azure 时,我最终获得了这么多 Azure
收集 Azure 诊断数据时,暂存槽是否也会将诊断数据发送到 WadPerformanceCounters 表? 如果是这样,我该如何关闭它?或者在阅读诊断信息时如何区分暂存/生产。 我不想显示有关我
您好,我是 Azure 的新手。我有 VS 2012 和 Azure SDK 2.1,当我使用模拟器运行我的 Web 应用程序时一切正常。但是当我在 azure 上部署时出现错误消息: Could n
我很难区分 Azure 订阅和 Azure 租户有何不同?我尝试使用示例来弄清楚,但每次我得出的结论是它们在某种程度上是相同的?如果租户是组织在注册 Microsoft 云服务时接收并拥有的 Azur
如果我想在 Azure Insights 中设置自定义指标集合,并以(近)实时的方式可视化其中一些指标,并查看聚合的历史数据,我应该使用 Azure Metrics Explorer 还是 Azure
我想了解具有以下配置的 Azure 数据工厂 (ADF) 的现实示例/用例: Azure 集成运行时 (AIR) 默认值 自托管集成运行时(SHIR) 其他问题: 这两种配置(AIR 和 SHIR)是
请参阅下面来自 Azure 服务总线的指标。想要识别请求数量中的背景噪音|流量较低时的响应。假设振荡请求| session 中 amqp 握手的响应是潜在的。只是不明白这是什么类型的握手?从总线接收的
此问题与 Azure 事件中心和 Azure 服务总线之间的区别无关。 问题如下: 如果您将Azure Events Hub添加到您的应用程序中,那么您会注意到它依赖于Azure Service Bu
这两个事情是完全不同的,还是它们能完成的事情大致相同/相似? 最佳答案 Azure 辅助角色是“应用程序场”中您自己的一组虚拟机。您可以以分布式方式在它们上运行任何代码。通常,您编写业务代码以在这些服
我目前正在使用 Windows Azure 虚拟机来运行 RStudio, 我的虚拟机是 Windows Server R2 2012,它是 Azure 上的一项附加服务。 我还有一个 Azure 存
我们正在寻找托管一个网站(一些 css、js、一个 html 文件,但不是 aspx、一个通用处理程序)。 我们部署为: 1) Azure 网站 2) Azure 云服务 两种解决方案都有效。但有一个
我想从 Azure 表创建 blob。 AzCopy 支持此功能,但我找不到任何说明数据移动 API 也支持它的文档。此选项可用吗? https://azure.microsoft.com/en-us
This article表示 Azure 订阅所有者有权访问订阅中的所有资源。但是,要访问 Azure 数据库,必须是数据库中的用户,或者是 Azure Admin AD 组的成员。 无论 SQL 安
我尝试使用以下代码将 XML 文件上传到 Azure FTP 服务器: https://www.c-sharpcorner.com/article/upload-and-download-files-
除了 Azure 服务总线使用主题而 Azure 事件中心基于事件 - Azure 事件中心和 Azure 服务总线之间是否有任何根本区别? 对我来说,事件和消息之间没有真正的区别,因为两者只是不同类
我有一个通过虚拟网络网关连接到 Azure 虚拟网络的 Windows VPN 客户端。目标#1 是使用其内部 IP 地址连接到我的虚拟机。这有效。 第二个目标是使用其内部计算机名称进行连接(因为 I
我是一名优秀的程序员,十分优秀!