node.js - 在 Azure Web 应用程序上安装 npm 几分钟后,node_modules 消失了

标签 node.js node-modules azure-web-app-service azure-webapps

我正在尝试通过 bitbucket 在 Azure Web 应用程序上部署我的 Node.js 应用程序。

当我检查 kudu 控制台上的 wwwroot 文件夹时,我找不到任何 node_modules 文件夹,因此应用程序无法启动

我已经在 kudu 控制台(在 wwwroot 文件夹内)中尝试了 npm install 和 npm install --product,并且我可以看到通过 filezilla 安装的 node_modules 和文件......但是,当我尝试再次启动应用程序时,node_modules 就消失了,在 kudu 控制台和 filezilla 中都看不到它。

项目文件夹中的package.json文件:

{
  "name": "fo",
  "version": "1.0.0",
  "description": "xx xx xx",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "xx xx",
  "license": "MIT",
  "dependencies": {
    "angular-map-it": "0.0.20",
    "angular-maps": "^6.0.1",
    "angular-waypoints": "^2.0.0",
    "axios": "^0.19.0",
    "bcrypt": "^3.0.6",
    "bluebird": "^3.5.5",
    "body-parser": "^1.19.0",
    "connect-mongodb-session": "^2.2.0",
    "convert-json": "^0.5.0",
    "csvtojson": "^2.0.10",
    "dotenv": "^8.0.0",
    "express": "^4.17.1",
    "express-session": "^1.16.2",
    "fixed-width-string": "^1.0.0",
    "guid": "0.0.12",
    "json2csv": "^4.5.2",
    "jsontoxml": "^1.0.1",
    "moment": "^2.24.0",
    "moment-business-days": "^1.1.3",
    "money": "^0.2.0",
    "mongoose": "^5.6.4",
    "multer": "^1.4.1",
    "ng-storage": "^0.3.2",
    "node-crisp-api": "^1.8.3",
    "nodemailer": "^6.3.0",
    "objects-to-csv": "^1.0.1",
    "open-exchange-rates": "^0.3.0",
    "sanitize": "^2.1.0",
    "svg-assets-cache": "^1.1.3"
  }
}

我不明白,人们如何让node.js应用程序在azure上运行?为什么node_modules消失了?为什么 azure 不根据我的 package.json 自动安装它们??

最佳答案

Azure 应用服务理解 package.json 和 npm-shrinkwrap.json 文件,并可以根据这些文件中的条目安装模块。

Azure 应用服务不支持所有 native 模块,并且在编译具有特定先决条件的模块时可能会失败。虽然 MongoDB 等一些流行模块具有可选的 native 依赖项,​​并且在没有它们的情况下也能正常工作,但事实证明,以下解决方法对于当今几乎所有可用的 native 模块来说都是成功的:

导航到 Kudu - https://yoursite.scm.azurewebsites.net/

找到 wwwroot 文件夹并运行安装命令。

CD站点

cd wwwroot

npm 安装

在安装了所有 native 模块先决条件的 Windows 计算机上运行 npm install。然后,将创建的 node_modules 文件夹作为应用程序的一部分部署到 Azure 应用服务。在编译之前,请检查本地 Node.js 安装是否具有匹配的体系结构,并且版本是否尽可能接近 Azure 中使用的版本(可以在运行时从属性 process.arch 和 process.version 检查当前值)。因此,请确保

Azure 应用服务可以配置为在部署期间执行自定义 bash 或 shell 脚本,让你有机会执行自定义命令并精确配置 npm install 的运行方式。有关演示如何配置该环境的视频,请参阅 Custom Website Deployment Scripts with Kudu 。请确保所有配置均正确。 如果问题仍然存在,请告诉我们您收到的具体错误消息(应用程序无法启动)以进行进一步调查,并查看此“Best practices and troubleshooting guide for node applications on Azure App Service Windows” ’了解有关该主题的更多详细信息。

关于node.js - 在 Azure Web 应用程序上安装 npm 几分钟后,node_modules 消失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57062072/

相关文章:

azure - Azure 应用服务和容器 Web 应用之间的区别

Azure应用服务: Select the endpoint based on HTTP header value

node.js - readFileSync-打包的应用程序上没有此类文件或目录

node.js - 使用 MongoDB 进行数据分区

node.js - 使用 KnexJS + PG 创建分页

javascript - 是否有将非结构化数据转换为 csv 的 npm 包?

javascript - phantomjs 在访问 aws-sdk 时找不到 Node 模块 'crypto'

javascript - Node.JS 如何处理重复的传递依赖?

javascript - 如何在带有参数的 promise 数组上使用 Promise.all()?

azure - 确保 azure 中网站和 VM 之间的网络安全