【问题标题】:How to fix tsc-watch restarts when test file uploading?测试文件上传时如何修复 tsc-watch 重启?
【发布时间】:2019-12-23 10:51:21
【问题描述】:

我想在我的 NestJS 项目中本地测试文件上传 API。我关注了this doc。但是,当我上传文件时,tsc-watch 重新启动,因为 upload 文件夹已更改。

这里我使用的是NestJS 第 6 版,所有东西都是从 nest-cli 安装的。我也在使用谷歌云存储来存储文件。我通过运行 yarn start:dev 在本地测试项目。

我尝试在tsconfig.jsontsconfig.build.jsonexclude 选项中添加upload 文件夹,但它不起作用。

我也尝试过使用nodemon。不幸的是,当我更改代码时,nodemon 没有重新启动。

这里有一些代码(repo here):

控制器

    @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');
        }
    }

服务

    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 一直在重新启动并且永远不会上传或删除文件。

upload 目录更改时,是否有办法阻止tsc-watch 重新启动,或者我应该使用其他工具吗?

【问题讨论】:

    标签: file nestjs tsc


    【解决方案1】:

    使用ts-lint 的第一个解决方案是将upload 文件夹移到src 文件夹之外并忽略该文件夹。

    另一个解决方案和你建议的一样,使用nodemonts-node,但是nodemon本身有看docker里面的文件的问题,把启动命令改成下面这样。

    "start": "nodemon -L --watch 'src/**/*.ts' --exec ts-node src/main.ts",
    

    【讨论】:

      【解决方案2】:

      你可以在 package.json 中设置忽略 watch

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

      【讨论】:

        猜你喜欢
        • 2020-10-22
        • 2019-09-18
        • 2022-12-13
        • 2021-01-27
        • 2018-05-31
        • 2022-10-14
        • 1970-01-01
        • 2018-08-30
        • 1970-01-01
        相关资源
        最近更新 更多