当前位置: 首页 > 知识库问答 >
问题:

javascript - nestjs 为何直接引入 ts 库无法转换而 vite 可以?

淳于健
2024-02-21

我直接用 package.json 封了一个 ts 的库(未转换)
用vite做前端项目可以正常引入
用 nestjs 却会报错。
除了让ts 库直接转换为 ts 还有什么方法可以让 nestjs 的项目直接支持 ts源文件,
类似 vite 的依赖预构建, 省去依赖升级编译的操作。
https://cn.vitejs.dev/guide/features#npm-dependency-resolving...

共有1个答案

江棋
2024-02-21

这是一个涉及 NestJS、Vite、TypeScript 库和依赖预构建的问题。我会尝试为你解释并提供可能的解决方案。

首先,NestJS 和 Vite 是两个不同的前端框架。NestJS 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的框架,而 Vite 是一个现代化的前端开发构建工具,旨在提供快速的开发启动和热模块替换。

关于你提到的直接引入未转换的 TypeScript 库并在 NestJS 中报错的问题,这可能是由于 NestJS 的模块解析和编译过程与 Vite 不同。NestJS 可能无法正确处理未转换的 TypeScript 库,因为它期望所有的依赖项都是已经编译为 JavaScript 的。

要解决这个问题,有几种方法可以让 NestJS 的项目直接支持未转换的 TypeScript 源文件,类似于 Vite 的依赖预构建:

  1. 使用 tsconfig.json 进行配置:在 NestJS 项目中创建一个 tsconfig.json 文件,并配置适当的编译器选项。这可以通过设置 compilerOptions 中的 allowJstrue 来实现,这将允许 JavaScript 文件通过 TypeScript 编译器进行编译。例如:
{  "compilerOptions": {    "allowJs": true,    // 其他配置项...  },  // 其他选项...}
  1. 使用 Rollup 插件:如果你希望在 NestJS 项目中预构建依赖项,可以考虑使用 Rollup 插件。Rollup 是一个 JavaScript 模块打包器,可以用于将多个模块打包成一个单独的输出文件。通过使用 Rollup 插件,你可以在构建过程中预处理和转换 TypeScript 依赖项。
  2. 自定义脚本或构建工具:如果你希望更精细地控制依赖项的处理和转换,可以考虑编写自定义脚本或使用其他构建工具(如 Webpack)来处理 TypeScript 库的引入和编译。这样可以根据你的需求进行更具体的配置和定制化处理。

这些方法可以帮助你在 NestJS 项目中直接支持未转换的 TypeScript 源文件,类似于 Vite 的依赖预构建。请根据你的具体需求选择适合的方法,并根据需要进行适当的配置和调整。

 类似资料:
  • 问题内容: 似乎无法弄清楚。我正在尝试在GSON中进行JSON树操作,但是在转换为之前,我不知道或没有POJO将字符串转换为的情况。有没有办法直接从a 转到? 我已经尝试了以下(Scala语法): 但失败,JSON被转义并解析为唯一,并 返回一个empty 。 有任何想法吗? 问题答案: 使用JsonParser; 例如:

  • 关于ts as number 依旧是string 的问题 我这里代码已经在每一个步骤已经声明了是 number 但是依旧打印出来时是string 但是如果我使用 parseInt(sid) 又会提示我number 类型的参数不能赋值于 string 所以 类型转换是怎么转换的呢 ts 正确的类型转换

  • vite如何导入静态.js文件呢?因为我的项目是monorepo架构的,其中有一个common包被其他vue项目所公共引用,然后这个common包里需要动态加载一些.js、.json文件,如何才能在common包放入这些静态文件并直接导入?我试了函数中使用import可以动态导入一些.json文件,但是对于.js文件导入不了。 之前是分别放在引入common的主项目下的public下,然后使用ax

  • 问题内容: 为什么写: 问题答案: 实现的对象是。 您要在其中覆盖的方法应将对象作为参数,而将其强制转换为。您的实现应描述如何与另一个进行比较。 要真正进行排序,您可能还需要制作工具,然后将实际逻辑复制粘贴到其中。

  • 问题内容: 我当前正在使用条件来检索用户的详细信息,但是当尝试用合适的用户查询详细信息对象时,我得到了ClassCastException。 我的标准代码; 我也尝试使用; 两者都给我ClassCastException。我知道我可以通过让用户实现Serializable来轻松解决它,但是还有其他解决方案吗? 问题答案: 唯一的其他解决方案是实现Externalizable。