如何在 Linux 中的 NodeJs Azure Functions 上修复“错误:/home/site/wwwroot/node_modules/canvas/build/Release/canv
Posted
技术标签:
【中文标题】如何在 Linux 中的 NodeJs Azure Functions 上修复“错误:/home/site/wwwroot/node_modules/canvas/build/Release/canvas.node:无效的 ELF 标头”?【英文标题】:How to fix "Error: /home/site/wwwroot/node_modules/canvas/build/Release/canvas.node: invalid ELF header" on NodeJs Azure Functions in Linux? 【发布时间】:2022-01-04 03:28:47 【问题描述】:我正在尝试在 NodeJs 中部署 AzureFunctions,但它在 Azure 上不起作用。 我的应用是在 Linux 上运行的 v3 函数。
部署完成后,我收到此 500 错误:
错误: /home/site/wwwroot/node_modules/canvas/build/Release/canvas.node: 无效的 ELF 标头
仅当我执行此导入时才会发生:
import ChartDataLabels from 'chartjs-plugin-datalabels';
const canvasRenderService = new CanvasRenderService(width, height, chartCallback);
const chartCallback = (ChartJS) =>
ChartJS.register(require('chartjs-plugin-datalabels'))
;
const jsdom = require("jsdom");
const JSDOM = jsdom;
const document = (new JSDOM(`...`)).window;
有人可以帮帮我吗?
它(仅)在我的机器上工作:(
编辑:当我通过 Linux 子系统进行部署时它可以工作。 我希望这会对某人有所帮助。
【问题讨论】:
ELF 是一种可执行程序格式。您有一个针对错误架构编译的程序/二进制文件。我不使用画布,所以我无法提供进一步的建议。 npmjs.com/package/canvas 【参考方案1】:Azure 函数在 部署到 azure 时不会包含 Node_modules
。因为Node_modules
目录包含非常大的文件。您可以在函数目录中包含 package.json
并运行 npm install
,就像在 Azure 中使用 Kudu (https://<function_app_name>.scm.azurewebsites.net )
或 Console 的 Node.js 项目一样门户。
查看Dependency management了解更多信息。
参考这里Link 1 & Link 2
【讨论】:
如果回答对您有帮助,请Accept it as an Answer,以便遇到相同问题的其他人可以找到此解决方案并解决他们的问题。以上是关于如何在 Linux 中的 NodeJs Azure Functions 上修复“错误:/home/site/wwwroot/node_modules/canvas/build/Release/canv的主要内容,如果未能解决你的问题,请参考以下文章
如何循环集合中的所有文档-Azure CosmosDB-Nodejs
使用Azure Functions中的NodeJS将文件保存到Azure Data Lake Storage的任何示例?
我们如何使用代理和 NodeJS 从 azure 存储下载 blob?