Угловая сборка не может найти модуль с относительным путем (в Azure Dev ops) - PullRequest
1 голос
/ 26 июня 2019

У меня проблема с получением проекта Angular 7 среднего размера для использования на конвейерах разработки Azure.Поэтому я создал минимальный проект, чтобы воссоздать проблему.

Используя 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;
}

Это также компилируется на локальном иЛазурь просто отлично.Проблема возникает при попытке добавить вложенную модель, см. 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 Ответ

2 голосов
/ 27 июня 2019

Согласно вашему коду, я заметил, что вы используете Ubuntu агент, который чувствителен к регистру.

Кроме того, вы настроили модуль " Action.model ", но при импорте вы использовали имя " Action.Model ".Для ubuntu и linux его нельзя идентифицировать как одно и то же из-за его чувствительности к регистру.

Я думаю, что вы можете выполнить этот скрипт локально с окнами, которые не чувствительны к регистру.Вот почему он работает локально.

Итак, для решения вам нужно изменить ваш скрипт следующим образом:

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

export class UserModel {
  id: number;
  name: string;
  actions: ActionModel[];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...