我有一个 .Net Core Web 应用程序,其中包含一些 npm 包。因此,我的项目根目录中有一个
package.json
文件,如果我在本地运行 npm install
,则会创建一个名为 node_modules
的文件夹。该文件夹中所需的文件由 UseStaticFiles
提供。到目前为止一切顺利,本地一切正常。
现在我正在从 GitHub Actions 自动将此应用程序部署到 Azure 应用服务。我使用在 Azure 部署中心创建的工作流 yaml 文件。工作流程做了两件事:
当然,除了 npm 包之外,一切都工作正常。
因此,我在工作流程中添加了另一个构建步骤,以便在直接在 Azure 上部署后运行
npm install
:
- name: npm install
run: npm install
如果 GitHub Action 被执行,我可以看到
npm install
被执行并安装了一些包:
但是,如果我在浏览器中打开应用程序,我会在控制台中收到错误消息,因为找不到 node_modules 中的资源。我通过 Kudo (
<myapp>.scm.azurewebsites.net/wwwroot
) 检查了我的应用程序服务的 wwwroot,确实没有 node_modules 文件夹。我猜 npm install
在错误的目录中执行,我知道我可以为 working-directory
构建步骤指定 npm-install
,但我不知道需要将其设置到哪个目录。
是否有人遇到同样的问题或知道如何在部署到 Azure 时从 GitHub Action 成功运行
npm install
?
当我使用 GitHub Actions 部署应用程序时,我能够推送
node_modules
文件夹。
确保
node_modules
文件夹已推送到 GitHub 存储库。
参考SO中的Git命令将本地目录推送到Git。
yml
文件中,路径设置为 ${{env.DOTNET_ROOT}}/myapp
,
将路径更改为 .
并重新运行作业。我知道我可以为
构建步骤指定working-directory
,但我不知道需要将其设置到哪个目录。npm-install
npm-install
的工作目录必须设置为package.json
所在的路径,即应用程序的根文件夹。
所以,你需要设置 .
,表示根目录。
要确保将
node_modules
文件夹推送到根目录,您甚至可以使用 复制命令 cp
以及路径。
库杜
请参阅 SO Thread 将
npm-install
安装在 yml
文件中。