首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >涡轮增压器封装意料之外的令牌出口

涡轮增压器封装意料之外的令牌出口
EN

Stack Overflow用户
提问于 2022-08-01 07:01:24
回答 1查看 723关注 0票数 6

我有一个名为项目类型的自定义包,在该包中,我在包之间共享类型。

当我将这个简单的类导入到我的nestjs项目中时,typescript可以很好地编译它,但是当涉及到运行时和执行javascript时,它是这样的:

代码语言:javascript
复制
server:dev: D:\Program\net-autism\packages\project-types\index.ts:1
server:dev: export * from "./authentication";     
server:dev: ^^^^^^
server:dev: 
server:dev: SyntaxError: Unexpected token 'export'
server:dev:     at Object.compileFunction (node:vm:352:18)
server:dev:     at wrapSafe (node:internal/modules/cjs/loader:1031:15)
server:dev:     at Module._compile (node:internal/modules/cjs/loader:1065:27)
server:dev:     at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)      
server:dev:     at Module.load (node:internal/modules/cjs/loader:981:32)

package.json

代码语言:javascript
复制
{
  "name": "project-types",
  "version": "0.0.5",
  "main": "./index.ts",
  "types": "./index.ts",
  "type": "module",
  "license": "MIT",
  "scripts": {
    "lint": "eslint *.ts*"
  },
  "devDependencies": {
    "eslint": "^7.32.0",
    "eslint-config-custom": "*",
    "tsconfig": "*",
    "typescript": "^4.5.2"
  },
  "dependencies": {
    "class-transformer": "^0.5.1",
    "class-validator": "^0.13.2"
  }
}

用法:

代码语言:javascript
复制
import { Body, Controller, Post } from '@nestjs/common';
import { LoginDto } from 'project-types';

@Controller('auth')
export class AuthController {
  constructor() {}

  @Post('login')
  async login(@Body() credentials: LoginDto) {}

  @Post('register')
  async register() {}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-26 16:49:08

我也遇到了这个问题。据我所知,当您构建您的消费应用程序时,它不是从您的类型包的类型记录。

对于NextJS项目,有一个npm包来解决这个问题,https://www.npmjs.com/package/next-transpile-modules

但是,由于我有一个NestJS项目,您需要自己转换类型包。这是我的设计:

packages/project-types/package.json

代码语言:javascript
复制
{
  ...
  // entry point is now the transpiled version of your code
  "main": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "type": "commonjs",
  "scripts": {
    "build": "tsc",
  ...
}

packages/project-types/tsconfig.json

代码语言:javascript
复制
{
  "include": ["."],
  "exclude": ["dist", "build", "node_modules"],
  "compilerOptions": {
    "module": "commonjs",
    "outDir": "./dist"
  }
}

apps/nest-project/tsconfig.json

代码语言:javascript
复制
{
  ...
  "module": "commonjs",
  ...
}

然后,您可以配置您的turbo.json,以确保所有依赖的包都在拓扑依赖之前构建。示例摘自Turbo:

代码语言:javascript
复制
  "pipeline": {
    "build": {
      // "A package's `build` command depends on its dependencies'
      // and devDependencies' `build` commands being completed first"
      "dependsOn": ["^build"]
    }
    // ... omitted for brevity
  }

希望这能有所帮助。

更新

示例存储库

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73189881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档