我无法在Azure Dev Ops Pipelines上构建中型Angular 7项目。因此,我创建了一个最小的项目来重新创建问题。
使用Angular CLI(7.2.4)我创建了一个新项目
ng new minimal-app
它可以在本地构建,也可以在Azure上构建。我编辑了app.component.ts以使用我的UserModel,第2、11和14行
import {Component} from '@angular/core';
import {UserModel} from '../Models/User.model';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'minimal-app';
user = new UserModel();
constructor() {
this.user.name = 'Jo';
}
}
User.model.ts文件包含
export class UserModel {
id: number;
name: string;
}
这也可以在本地和Azure上编译。尝试添加嵌套模型时会出现问题,请参见Action.model.ts
export class ActionModel {
id: number;
datetime: string;
}
并更改UserModel
import {ActionModel} from './Action.Model';
export class UserModel {
id: number;
name: string;
actions: ActionModel[];
}
这在本地有效,但我在Azure Dev Ops上获得
ERROR in src/Models/User.model.ts(1,27): error TS2307: Cannot find module './Action.Model'.
##[error]Bash exited with code '1'
我没有更改任何Angular配置文件,它们都是新项目的默认设置。蓝色管道yml是
# Node.js with Angular
# Build a Node.js project that uses Angular.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- script: |
npm install -g @angular/cli
npm install
ng build --prod
displayName: 'npm install and build'
答案 0 :(得分:1)
根据您的代码,我注意到您正在使用区分大小写的 Ubuntu 代理。
而且,您配置的模块是“ Action.model ”,但是在导入时,您使用的名称是“ Action.Model ”。对于ubuntu和linux,由于区分大小写,因此无法将其标识为相同。
我认为您可以使用不区分大小写的Windows在本地执行这些脚本。这就是为什么它在本地工作的原因。
因此,要解决此问题,您需要将脚本更改为:
import {ActionModel} from './Action.model';
export class UserModel {
id: number;
name: string;
actions: ActionModel[];
}