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

在Node.js中使用TypeScript:如何将import语句转为require语句?

嘿,这两个问题我熟,给你一步步讲清楚!

1. Node.js + TypeScript 下把 import 转成 require 的通用方法

其实如果你的TypeScript项目配置正确,编译时会自动把import转换成require——只要在tsconfig.json里把module设为CommonJS(Node.js默认的模块系统)就行。不过要是你想手动转换或者搞清楚对应关系,这里分几种常见场景:

  • 默认导入:比如 import React from 'react',对应的require写法是 const React = require('react')。
  • 命名导入:比如 import { useState, useEffect } from 'react',对应 const { useState, useEffect } = require('react')。
  • 带别名的命名导入:就是你第二个问题里的情况,核心是把别名保留在解构赋值里,后面具体说。
  • 全部导入为一个对象:比如 import * as lodash from 'lodash',对应 const lodash = require('lodash')。
  • 仅导入模块(不使用导出):比如 import './setup.js',对应 require('./setup.js')。

另外,记得把tsconfig.json里的moduleResolution设为Node、Node16或者NodeNext,这样模块解析逻辑会更贴合Node.js的实际行为。

2. 转换特定 import 语句并解决声明文件报错

先处理转换:你的原代码是 import { transliterate as tr, slugify } from 'transliteration';,对应的require写法非常直接,只要把别名保留在对象解构里就行:

const { transliterate: tr, slugify } = require('transliteration');

接下来解决缺少声明文件的报错——这个问题是TypeScript不知道transliteration模块的类型定义,有两个靠谱的解决办法:

  • 安装官方维护的类型声明包:绝大多数流行的npm包都有社区维护的@types包,你只需要在项目里运行这条命令:
    npm install @types/transliteration --save-dev
    
    安装完成后,TypeScript就能自动识别模块的类型,报错会立刻消失。
  • 手动声明模块(如果没有@types包的话):要是找不到对应的@types包,你可以自己写一个简单的类型声明文件。在项目里新建一个typings文件夹,然后创建transliteration.d.ts文件,内容如下:
    declare module 'transliteration' {
      export function transliterate(str: string): string;
      export function slugify(str: string): string;
      // 要是需要用到其他方法,也可以在这里补充类型定义
    }
    
    最后别忘了在tsconfig.json的include数组里加上这个文件夹,比如:
    "include": ["src/**/*", "typings/**/*"]
    
    这样TypeScript就能识别这个模块的类型了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:22:46