【问题标题】:NestJS Views Not gettings added to DistNestJS 视图未添加到 Dist
【发布时间】:2021-02-08 09:17:13
【问题描述】:

我的文件夹结构类似于下面。

public
views
src
  main.ts
  /users
       users.controller.ts
       /views
         my-view.hbs
  /books
       books.controller.ts
       /views
         my-view.hbs

这是我用来添加模板和视图的东西

 const app = await NestFactory.create<NestExpressApplication>(
    AppModule,
  );
  console.log(join(__dirname, 'public'));

  app.useStaticAssets(join(__dirname, '..', 'public'));
  app.setBaseViewsDir(join(__dirname, '..', 'views'));
  app.setViewEngine('hbs');
  hbs.registerPartials(join(__dirname, '..', 'views', 'partials'));

我的 package.json 脚本看起来像这样

"scripts": {
    "prebuild": "rimraf dist",
    "build": "nest build",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
    "start": "nest start",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/src/main",
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:cov": "jest --coverage",
    "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
    "test:e2e": "jest --config ./test/jest-e2e.json"
  },

我的问题是,当我在开发模式下运行嵌套时,它会构建分发代码,但不会添加视图和公用文件夹。

【问题讨论】:

    标签: node.js typescript nestjs


    【解决方案1】:

    我遇到了同样的问题,我发现"assets" 应该在"compilerOptions" 中,你确认了吗?

    我确实让它像这样工作:

    {
      "collection": "@nestjs/schematics",
      "sourceRoot": "src",
      "compilerOptions": {
        "webpack": false,
        "assets": [
          "**/*.hbs"
        ],
        "watchAssets": true
      },
      "generateOptions": {
        "spec": false
      }
    }
    
    

    【讨论】:

      【解决方案2】:

      查看官方文档中的this部分。

      使用assetsnest build 将分发非 TypeScript 文件,例如 .graphql 文件、图像、.html 文件和其他资产,作为开发构建步骤的一部分。

      例子:

      "assets": ["**/*.hbs"]
      

      将此添加到位于根目录中的 nest-cli.json 文件中。

      【讨论】:

      • 这对我不起作用。它仍然不会将视图文件夹移动到 dist。
      【解决方案3】:

      我遇到了完全相同的问题。 问题是用于设置文件夹路径的函数 join 实际上是连接其中的字符串。 因此,就我而言,我的视图和公用文件夹位于 src 文件夹之外。

      我的台词是: app.useStaticAssets(join(__dirname, '..', 'public')); 我将其更改为: app.useStaticAssets(join(__dirname, '..', 'src/public'));

      这解决了我的问题。

      【讨论】:

        猜你喜欢
        • 2022-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多