You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux Azure App Service运行NodeJS?解决fabric模块找不到报错

问题描述

我的项目在本地Windows电脑上运行完全正常,此前在同一Linux Azure App Service上也正常运行了数月,本地环境与云端使用相同版本的node和npm。

通过VS部署后,我会SSH登录并执行以下命令:

curl -sL https://deb.nodesource.com/setup_16.x | bash 
apt-get install -y nodejs
npm install canvas | npm install fabric

此前这样操作即可正常运行,但现在出现如下错误:

An unhandled exception occurred while processing the request.
InvocationException: Cannot find module 'fabric' Require stack:

  • Error: Cannot find module 'fabric' Require stack:
  • at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15) at Function.Module._load
    (node:internal/modules/cjs/loader:778:27) at Module.require
    (node:internal/modules/cjs/loader:1005:19) at require
    (node:internal/modules/cjs/helpers:102:18) at module.exports
    (anonymous:4:40) at Server. ([eval]:1:2404) at
    Generator.next () at [eval]:1:355 at new Promise
    () at o ([eval]:1:100)

我已尝试清理npm缓存、删除所有文件重新发布、执行npm install、npm update,加或不加-g参数等操作,但问题仍未解决。

请问有什么解决该报错的方法?同时希望找到无需每次部署后手动SSH执行命令的优化方案。


解决方案

一、解决"Cannot find module 'fabric'"报错

  1. 修正依赖安装命令的语法错误
    你当前使用的npm install canvas | npm install fabric中的|是管道符,会将前一个命令的输出作为后一个命令的输入,可能导致npm install fabric未正确执行。应改为用&&串联命令,确保前一个命令成功后再执行下一个:

    npm install canvas && npm install fabric
    
  2. 确保依赖已写入package.json
    手动执行npm install不会自动将依赖添加到package.json,部署后项目根目录的node_modules不会被保留(Azure部署会清理旧文件)。需要在本地项目根目录执行:

    npm install fabric canvas --save
    

    提交更新后的package.json和package-lock.json到代码仓库,这样部署时Azure会自动安装所有依赖。

  3. 指定Azure App Service的Node版本
    无需手动通过脚本安装Node,直接在Azure门户的App Service「配置」→「应用设置」中添加:

    • 名称:WEBSITE_NODE_DEFAULT_VERSION
    • 值:16.x
      保存后Azure会自动使用指定版本的Node环境,避免版本不一致问题。
  4. 清理云端缓存并重新安装依赖
    通过SSH连接到App Service后执行:

    cd /home/site/wwwroot
    rm -rf node_modules package-lock.json
    npm install
    

    也可通过Kudu工具清理部署缓存:进入App Service「高级工具」→「Kudu」→「工具」→「部署工具」→「清理部署缓存」。

二、优化部署流程,无需手动执行SSH命令

  1. 依赖托管到package.json
    确保所有生产依赖(包括fabric和canvas)都已添加到package.json的dependencies中,Azure的Oryx部署引擎会自动执行npm install完成依赖安装。

  2. 配置启动脚本(可选)
    如果需要自定义部署步骤,可在项目根目录创建.deployment文件,内容如下:

    [config]
    command = npm install && npm start
    

    部署时Azure会自动执行该命令。

  3. 启用自动部署
    配置VS或GitHub Actions等CI/CD工具,实现代码提交后自动部署到Azure App Service,完全省去手动操作步骤。


内容的提问来源于stack exchange,提问作者Kevin UK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 14:36:25