angular - 使用 Angular 应用程序在 Azure DevOps 中构建发布管道 - 找不到包含 package.json 的工作文件夹
问题描述
我正在为 Visual Studio 2017 中的 ASP.NET Core Angular 应用程序设置发布管道,并且在查找 package.json 文件的 npm 任务时遇到了重大问题。我知道该文件在那里 - 它最初位于 ClientApp 文件夹中,我还将它添加到主文件夹和 dist 文件夹以进行测试,同时我试图找出它为什么不喜欢我的文件!
我确实尝试了所有可能性,包括使用 $(System.DefaultWorkingDirectory)。这是我第一次在 Azure DevOps 工作,也是我第一次尝试设置管道。我无休止地搜索,甚至尝试重新排队构建管道。
我完全有可能设置了错误类型的发布管道。我选择了一份空工作,我有 3 个任务 - npm install、npm build 和发布工件(我一直在尝试遵循一些在线教程)。我还从 ASP.Net Core 模板创建了构建管道,运行了 yaml 文件等。
作为说明,我确实安装了 node.js 和 angular,并确保正确的文件在我的 dist 文件夹中。我添加了一个 web.config 文件,将它添加到我的 Angular json 文件中的资产中。我还在 package.json 文件夹中添加了一个小脚本来实际构建。
"project": {
"name": "Test"
},
"apps": [
{
"root": "src",
"outDir": "dist",
"assets": [
"assets",
"src/web.config"
],
"index": "index.html",
"main": "main.ts",
"polyfills": "polyfills.ts",
"test": "test.ts",
"tsconfig": "tsconfig.app.json",
"testTsconfig": "tsconfig.spec.json",
"prefix": "app",
"styles": [
"styles.css",
"../node_modules/bootstrap/dist/css/bootstrap.min.css"
],
"scripts": [],
"environmentSource": "environments/environment.ts",
"environments": {
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
}
],
"name": "Test",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"prod-build-dev": "ng build --prod --build-optimizer",
"prod-build-staging": "ng build --prod --configuration=staging --build-optimizer"
},
我希望 npm 任务能够找到 package.json 文件,但这不是正在发生的事情。请查看这些错误消息,每个错误消息都针对包含 package.json 的工作文件夹的不同输入显示。一是找不到目录。另一方面,它找不到文件。
错误 #1:错误:Npm 失败,返回码:4294963238
搭配:
14 error enoent ENOENT: no such file or directory, open 'D:\a\r1\a\package.json' 2019-08-10T15:08:12.2500818Z 15 error enoent 这与 npm 无法找到文件。
和
错误 #2:错误:ENOENT:没有这样的文件或目录,stat 'D:\a\r1\a\Test\ClientApp\dist'
解决方案
使用 Angular 应用程序在 Azure DevOps 中构建发布管道 - 找不到包含 package.json 的工作文件夹
根据错误信息:
没有这样的文件或目录,打开 'D:\a\r1\a\package.json'
看来您没有为选项使用正确的路径Working folder that contains package.json
。您正在工件目录的根文件夹中搜索 package.json 文件。 D:\a\r1\a\
.
要解决此问题,您应该指定工作文件夹,例如$(System.DefaultWorkingDirectory)\Test\Test\ClientApp
注意:您应该在构建管道时发布项目/解决方案,否则我们无法在发布管道中获取文件。
希望这可以帮助。
推荐阅读
- windows - 如何在 Windows 上使用命令提示符获取 .exe 文件的内存大小
- python - 在 anaconda 中设置虚拟环境失败
- c - Atmel 工作室无法将 char 数组作为字符串发送
- excel - ¿ 如何从打开的 excel 中复制和粘贴信息?
- asp.net-mvc - IIS 7 - 部署 web 项目后,一些 css 和 js 文件给出 403 错误
- php - 更快地运行 openssl 加密功能
- c# - 带有继承类的 C#/WCF 中的 XML 序列化错误
- android - 仅将 Firebase 分析重新路由到另一个帐户
- java - Java 持久异常
- jquery - $(...).tabOverride 在使用 tabOverride jquery api 时不是一个函数