角构建无法找到具有相对路径的模块(在azure dev ops上)

时间:2019-06-26 13:29:56

标签: angular azure-devops

我无法在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'

1 个答案:

答案 0 :(得分:1)

根据您的代码,我注意到您正在使用区分大小写的 Ubuntu 代理。

而且,您配置的模块是“ Action.model ”,但是在导入时,您使用的名称是“ Action.Model ”。对于ubuntu和linux,由于区分大小写,因此无法将其标识为相同。

我认为您可以使用不区分大小写的Windows在本地执行这些脚本。这就是为什么它在本地工作的原因。

因此,要解决此问题,您需要将脚本更改为:

import {ActionModel} from './Action.model';

export class UserModel {
  id: number;
  name: string;
  actions: ActionModel[];
}