You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

package.json配置type:module时Windows下如何执行tsx脚本?

可行解决方案

方案1:调整ts-node配置适配ESM环境

针对你遇到的目录导入报错、tsx扩展名不识别问题,通过补充配置即可解决:

  • 第一步:安装必要依赖
    执行yarn add -D ts-node typescript @types/node @types/react
  • 第二步:修改tsconfig.json配置,新增/调整如下字段
    {
      "compilerOptions": {
        "target": "ES2020",
        "module": "ESNext",
        "moduleResolution": "Node",
        "jsx": "react-jsx",
        "esModuleInterop": true,
        "allowSyntheticDefaultImports": true
      },
      "ts-node": {
        "esm": true,
        "experimentalSpecifierResolution": "node",
        "compilerOptions": {
          "jsx": "react-jsx"
        }
      }
    }
    
  • 第三步:修改package.json的scripts配置
    将myScript命令调整为:"myScript": "node --loader ts-node/esm ./你的脚本路径.tsx"

方案2:使用tsx运行器(零复杂配置推荐)

tsx是基于esbuild的TypeScript/TSX运行器,天然兼容ESM模式,无需复杂配置即可适配你的场景:

  • 第一步:安装依赖
    执行yarn add -D tsx
  • 第二步:修改package.json的scripts配置
    将myScript命令调整为:"myScript": "tsx ./你的脚本路径.tsx",直接运行即可。

注意事项

  • Node 14的原生ESM模式不支持省略本地文件导入的扩展名,也不支持默认导入目录下的index文件,你需要把脚本里所有本地导入路径补全后缀,例如import utils from './utils.ts'、import config from './config/index.ts'
  • 如果选择直接用tsc转译后运行,在tsconfig的compilerOptions中添加"skipLibCheck": true即可过滤node_modules相关的类型报错
  • 此前babel转译报require is not defined是因为babel默认把模块转译为CommonJS规范,和package.json的"type": "module"冲突,无需再尝试该方案。

内容的提问来源于stack exchange,提问作者Marcelo Diani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:27:04