esm问题

两个关于模块配置项

compilerOptions.module 决定tsc打包模块后的输出,如esm或cjs

compilerOptions.moduleResolution 影响的是在执行node xxx.ts时候 模块解析过程,用在运行时

import cjs包冲突怎么办

当通过 esm 使用到node 内置模块的时候,import path from "node:path"; 可能会报错类似于 :

模块 ""node:path"" 只能在使用 "esModuleInterop" 标志时进行默认导入ts(1259)
path.d.ts(191, 5): 此模块是使用 “export =” 声明的,只能在使用“esModuleInterop”标志时用于默认导入

只需要打开此项即可 compilerOptions.esModuleInterop,作用就是处理cjs于esm冲突

esm和tsc要求冲突

esm要求导入文件必学携带后缀,但是 tsc 要求你在 ts 文件中不能携带后缀。

临时的解决方案是 “源码虽然是 esm+ts,但是导入的时候不写后缀,并将打包后的输出 compilerOptions.module 配置为 cjs (既默认值)”

或者你使用 webpack 或者 vite 或者 esbuild 更完整的搭建工具链,从而生成你需要的构建结果

直接运行ts

在node v23的时候已经直接支持直接运行ts文件 node test.ts,但是再此版本之前:

  • 你需要借助tsc
  • 如果你不想显式编译,而是直接运行 可以借助于 ts-node、tsx,
  • 如果你还需要热更新 可以考虑 ts-node-dev 或者 nodemon+tsx等方案

推荐 tsx,因为现阶段 ts-node已经摆烂了

短路径(别名)

推荐此包 tsc-alias

ts 运行时和打包问题的更多相关文章

  1. 优化单页面开发环境:webpack与react的运行时打包与热更新

    前面两篇文章介绍初步搭建单页面应用的开发环境: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-router实现单页面应用路由 这 ...

  2. 【python】python打包生成的exe文件运行时提示缺少模块

    事情是这样的我用打包命令:pyinstaller -F E:\python\clpicdownload\mypython.py打包了一个exe程序,但是运行时提示我缺 少bs4模块然后我就去查pyin ...

  3. sbt打包Scala写的Spark程序,打包正常,提交运行时提示找不到对应的类

    sbt打包Scala写的Spark程序,打包正常,提交运行时提示找不到对应的类 详述 使用sbt对写的Spark程序打包,过程中没有问题 spark-submit提交jar包运行提示找不到对应的类 解 ...

  4. Hadoop打包成jar包在集群上运行时出现的各种问题以及解决方案

    之前将eclipse下编好的mapreduce代码放到集群上面跑,发现速度很慢,namenode节点的cpu和内存使用率很低,datanode节点基本上处于没有运行的状态,然后通过查看hadoop-e ...

  5. qiankun 2.x 运行时沙箱 源码分析

    简介 从源码层面详细讲解了 qiankun 框架中的 JS 沙箱 和 样式沙箱的实现原理. 序言 沙箱 这个词想必大家应该不陌生,即使陌生,读完这篇文章也就不那么陌生了 沙箱 (Sandboxie) ...

  6. Unity运行时检测Altas使用情况

    UI贴图在游戏中内存大小中占的分量非常非常大,尤其对于前期对UI没有规划的项目,无论是包量还是内存大小都是需要花费很多时间去优化.如果涉及到战斗场景和逻辑场景的情况下,常用的做法就是把两个场景使用的a ...

  7. java虚拟机运行时乱码问题

    问题: Android端通过socket发送文本到windows,windows调用系统剪切板进行粘贴的操作,java服务端在eclipse下直接运行粘贴的文本无乱码,打包jar后粘贴的文本乱码. 解 ...

  8. iOS运行时 -- Runtime(摘抄自网络)

    运行时(iOS) 一.什么是运行时(Runtime)? 运行时是苹果提供的纯C语言的开发库(运行时是一种非常牛逼.开发中经常用到的底层技术) 二.运行时的作用? 能获得某个类的所有成员变量 能获得某个 ...

  9. iOS开发——底层OC篇&运行时常用

    运行时常用 什么是Runtime(前面的文章已经说的很清楚了,这里就简单的介绍一下) 我们写的代码在程序运行过程中都会被转化成runtime的C代码执行,例如[target doSomething]; ...

  10. .NET中 类型,对象,线程栈,托管堆在运行时的关系

    .NET中 类型,对象,线程栈,托管堆在运行时的关系 The Relationship at Run Time between Types,Objects,A Thread's Stack,and T ...

随机推荐

  1. Linux终端居然也可以做文件浏览器?

    大家好,我是良许. 在抖音上做直播已经整整 5 个月了,我很自豪我一路坚持到了现在[笑脸] 最近我在做直播的时候,也开始学习鱼皮大佬,直播写代码.当然我不懂 Java 后端,因此就写写自己擅长的 Sh ...

  2. Vue3 中的5种常见的组件传值方式,Vue3事件总线(无需插件)

    Vue3 中常见的组件传值方式: Props:这是 Vue 中最常见的组件传值方式,即在父组件中定义 prop 并将数据传递给子组件. Event Bus:可以通过事件总线在两个组件之间进行通信,即定 ...

  3. [转自洛谷]洛谷KateX公式大全【LateX】

    前言 由于在洛谷,有很多人对于\(\KaTeX\)和\(\LaTeX\)之间的关系并不清楚,导致很多人去搜\(\LaTeX\)的资料,然后发现有许多指令无法在洛谷运行. 但是事实上,\(\KaTeX\ ...

  4. java设置权限过滤器--防止用户未登录访问某些页面

    话不多说,上代码!!! package com.store.web.filter; import java.io.IOException; import javax.servlet.Filter; i ...

  5. 【HUST】网安|多媒体数据安全实验|LSB隐写和DCT域JSTEG+F4+F5隐写及检测

    文章目录 LSB空域隐写 原理 值对现象原理 实验内容 DCT域隐写 JSteg F4 F5 代码仓库:代码.嵌入提取使用的图像.jpeg_tool库.实验报告_Gitee. 实验环境:MATLAB ...

  6. Selenium中解决输入法导致sendKeys输入内容与预期不一致的问题

    有时候由于系统输入法处于中文状态或英文状态输入内容与预期不一致的问题,我们采用文本内容拷贝的方式传递给相关元素,从而解决该问题,具体代码如下: /*** * 通过拷贝的方式输入文字内容,防止输入法中英 ...

  7. kubernetes理论

    kubernetes特性:自动装箱,自我修复,自动水平扩展,自动服务发现,服务自动负载均衡,自动发布和回滚 秘钥和配置管理,存储编排,批量处理执行 kubernetes架构:master/node m ...

  8. Possible data inputs to DataFrame constructor

    Possible data inputs to DataFrame constructor: import pandas as pd import numpy as np (1) 2D ndarray ...

  9. .NET外挂系列:5. harmony 中补丁参数的有趣玩法(下)

    一:背景 1. 讲故事 开局一张表,故事全靠编,为了能够承上启下,先把参数列表放出来. 参数名 说明 __instance 访问非静态方法的实例(类似 this). __result 获取/修改返回值 ...

  10. python3里面实现将日志文件写入当前脚本运行的文本中

    在 Python3 中,可以使用 logging 模块来实现将日志写入本地文本文件中.下面是一个简单的示例代码: import logging # 配置 logging 模块 logging.basi ...