Как исправить перезапуск tsc-watch при загрузке тестового файла? - PullRequest
0 голосов
/ 13 октября 2019

Я хочу проверить API загрузки файлов локально в моем проекте NestJS. Я следовал за этим документом . Однако при загрузке файлов tsc-watch перезапускается, так как папка upload изменяется.

Здесь я использую NestJS версию 6 и все, установленное с nest-cli. Я также использую Google Cloud Storage для хранения файлов. Я тестирую проект локально, запустив yarn start:dev.

Я попытался добавить папку upload в опции exclude в tsconfig.json и tsconfig.build.json, но она не работает.

Я также пытался использовать nodemon. К сожалению, nodemon не перезапускается при внесении изменений в код.

Вот некоторые коды ( репо здесь ):

контроллер

    @Patch(':id/file')
    @UseInterceptors(
        FileInterceptor('file', { dest: join(__dirname, '../../upload') }),
    )
    async uploadProblem(
        @UploadedFile() file: FileDto,
        @Param('id') id: string,
    ) {
        if (file) {
            await this.service.uploadProblem(id, file);
        } else {
            throw new BadRequestException('No files uploaded');
        }
    }

service

    async uploadProblem(id: string, file: FileDto) {
        const problem = await this.findById(id);
        await this.fileService.uploadFile(`${problem.code}/problem`, file);
    }

fileService

    async uploadFile(name: string, file: FileDto) {
        await this.bucket.upload(file.path, {
            destination: name,
            contentType: file.mimetype,
            resumable: false,
        });
        removeSync(file.path);
    }

package.json

{
  ...
  "scripts": {
    ...
    "start:dev": "tsc-watch -p tsconfig.build.json --onSuccess \"node dist/main.js\"",
    ...
  },
  "dependencies": {
    "@google-cloud/storage": "^3.3.1",
    "@nestjs/common": "^6.0.0",
    "@nestjs/core": "^6.0.0",
    "@nestjs/mongoose": "^6.1.2",
    "@nestjs/platform-express": "^6.0.0",
    "class-transformer": "^0.2.3",
    "class-validator": "^0.10.1",
    "fs-extra": "^8.1.0",
    "mongoose": "^5.7.3",
    "reflect-metadata": "^0.1.12",
    "rimraf": "^2.6.2",
    "rxjs": "^6.3.3"
  },
  "devDependencies": {
    "@nestjs/testing": "^6.0.0",
    "@types/express": "4.16.1",
    "@types/fs-extra": "^8.0.0",
    "@types/jest": "24.0.11",
    "@types/mongoose": "^5.5.19",
    "@types/node": "11.13.4",
    "@types/supertest": "2.0.7",
    "jest": "24.7.1",
    "prettier": "1.17.0",
    "supertest": "4.0.2",
    "ts-jest": "24.0.2",
    "ts-node": "8.1.0",
    "tsc-watch": "2.2.1",
    "tsconfig-paths": "3.8.0",
    "tslint": "5.16.0",
    "typescript": "3.4.3"
  },
  ...
}

Я ожидаю, что файл будет загружен и удален позже, но tsc-watch продолжает перезапуск и никогда не загружает и не удаляет файл.

Есть ли способ остановить tsc-watch от перезапуска при изменении каталога upload, или есть ли другие инструменты, которые я должен использовать?

1 Ответ

0 голосов
/ 18 октября 2019

Вы можете настроить игнорирование часов в package.json

"watch": {
    "ignore": "upload"
  }
...