node.js - Azure 网站中的 NPM 错误和控制

标签 node.js azure deployment npm azure-web-app-service

我想在 Azure 网站中构建我的 Node.JS 应用程序。
将通过我的 packages.json 文件使用不同的 NPM 包。
我的问题是,我经常收到与缺少 NPM 文件相关的错误消息。

通常,我通过 FTP 放置文件或直接在服务器上通过 VS Studio 15 Azure 插件编辑文件。这可能是 NPM 未按 Microsoft 预期触发的原因。

我更喜欢一种只需以提升的权限运行命令即可完全控制 NPM 的方式。 有哪些方法可以解决这些问题?

最佳答案

如果您通过 FTP“手动”发布 NodeJS 应用程序,则无需担心。

首先,“手动”意味着手动。

Git

如果您使用通过 Git 持续部署,最后的部署步骤是在当前应用程序文件夹中调用 npm install,这将安装 中列出的所有软件包package.json 文件。

node_modules文件夹默认排除在.gitignore文件中,因此所有包都由服务器下载

网络部署

如果您从 Visual Studio 或命令行使用 Web 部署,解决方案中包含的所有文件都会复制到托管环境,包括 node_modules 文件夹,因为由于该文件夹包含大量依赖项和文件,部署将需要很长时间才能完成。

最糟糕的是:这种情况可能会将您带到您现在面临的相同情况。

FTP部署

您自己复制了所有内容。因此,在 Web 部署中发生同样的事情也发生在 FTP 部署方法中。

-- 问题是,当您复制所有这些 node_modules 文件夹内容时,您假设这些依赖项在目标环境中保持不变,大多数情况下都是如此,但并非总是如此。

一些依赖项是平台相关的,所以也许在您的开发环境中,依赖项在 x86 架构中可以正常工作,但是如果您的目标计算机或网站(或它们之间的某种混合)是 x64 该怎么办(实际情况我已经遭受了它)。

可能会发生其他相关问题。可能您的直接依赖项没有问题,但链接到它们的依赖项可能有问题。

因此强烈建议始终在目标环境中运行 npm install避免直接从开发环境复制依赖项。

这样,您需要在目标环境中复制不包括 node_modules 文件夹的文件夹结构。然后,当复制文件时,您需要在服务器上运行 npm install

要实现这一目标,您可以访问

yoursitename.scm.azurewebsites.net

您可以转到“调试控制台”选项卡,然后转到此目录D:\home\site\wwwroot>并运行

npm install

之后,将下载服务器/网站架构的包和依赖项。

希望这有帮助。

Azure 调整 Kudu 输出设置,在本地 Kudu 实现中看起来输出已标准化。

解决方法 - 不完美 - 可能是这样的

npm install --dd

或者更详细

npm install --ddd

关于node.js - Azure 网站中的 NPM 错误和控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34192264/

相关文章:

javascript - 以 JSON 格式创建 res.cookie,并将值作为对象

azure - 如何调用azure web作业并传递参数

c# - 消息 - 更新 Azure 上的函数版本

node.js - Heroku 上的 nodemon 启动错误

iis - 什么是Windows上网站的良好部署工具?

deployment - Docker 容器上的分布式系统 NSQ 拓扑模式

javascript - Node JSON https 请求变得未定义

javascript - 发送消息到房间 socket.io node.js

node.js - Mac安装openssl,环境找不到

visual-studio - 如何通过 Visual Studio 将包含多个项目的.Net 解决方案发布到 Azure