嵌套构建在管道中失败:找不到在本地构建时可以找到的模块

Nest build fails in pipeline: Cannot find modules which can be found when building locally

在我的 NestJS 项目中,构建和 运行ning 在本地工作,但是在我的 Azure 管道中构建相同的代码时,它最近开始失败,因为在命令 npm run build 开始。当我在本地 运行 命令时,没有任何问题并且构建正确。

确实有很多模块可以正确找到(或没有给出错误),那么这些为什么不呢?您可以在 Imgur 上的这张图片中找到我的 file layout 的图片,相关文件可见。所有 类 都被声明为 export class ... {} 并且其中大部分也在 AppModule 中导入,它们不会报错。

流水线布局(相关部分):

trigger:
  - master
  - dev

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: NodeTool@0
  displayName: 'Install Node 12'
  inputs:
    versionSpec: 12.0.0

- script: |
    npm install -g typescript
    npm install
    npm test
  displayName: 'run tests'

- script: |
    npm run build
  displayName: 'build dist folder'

管道日志:(相关部分)

Generating script.
Script contents:
npm run build
========================== Starting Command Output ===========================

> fleetbot-nestjs@0.0.1 prebuild /home/vsts/work/1/s
> rimraf dist


> fleetbot-nestjs@0.0.1 build /home/vsts/work/1/s
> nest build

10 import { MailerService } from "../../Mailer/mailer.service";
                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/app.module.ts:13:30 - error TS2307: Cannot find module './Mailer/mailer.module'.

13 import { MailerModule } from './Mailer/mailer.module';
                                ~~~~~~~~~~~~~~~~~~~~~~~~
src/app.module.ts:14:34 - error TS2307: Cannot find module './Mailer/mailer.controller'.

14 import { MailerController } from './Mailer/mailer.controller';
                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/app.module.ts:15:33 - error TS2307: Cannot find module './Teams/teams.controller'.

15 import { TeamsController } from './Teams/teams.controller';
                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~
src/app.module.ts:16:37 - error TS2307: Cannot find module './Chatlayer/chatlayer.controller'.

16 import { ChatlayerController } from './Chatlayer/chatlayer.controller';
                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/mailer/mailer.module.ts:4:33 - error TS2307: Cannot find module '../Mailer/mailer.provider'.

4 import { mailerProviders } from "../Mailer/mailer.provider";
                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~

Found 9 error(s).

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! fleetbot-nestjs@0.0.1 build: `nest build`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the fleetbot-nestjs@0.0.1 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/vsts/.npm/_logs/2020-06-03T18_00_47_946Z-debug.log

##[error]Bash exited with code '1'.
Finishing: build dist folder

它通过将构建代理更改为 macOs 来工作。确实一定是区分大小写出了问题。

我在使用 bitbucket 管道时遇到了类似的问题。这是因为我在不同的步骤中编写了npm installnpm run build,因此无法找到下一步所需的模块。

我在对 Azure 管道实施测试时遇到了类似的问题。在我的例子中,它是一个名为 karma.config.ci.js 的模块。必须在我的根目录中添加此文件才能解决问题。