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

TypeScript如何引入Node.js模块?遇exports未定义报错求助

解决"Uncaught ReferenceError: exports is not defined"问题

问题本质

这个错误的核心原因是:浏览器原生不支持Node.js的CommonJS模块规范(exports/require均属于该规范语法),若直接把为Node.js环境编写的代码放到浏览器中运行,就会触发该报错。另外你提到的import ms = require("mysql")是TypeScript旧版的混合导入语法,现在已不推荐,且核心问题仍在于模块运行环境不匹配。

具体解决方案

1. 确认代码运行环境(Node.js 而非浏览器)

mysql模块是仅用于Node.js后端的数据库驱动,完全无法在浏览器环境直接运行。如果你的代码是为Node.js编写的,不要在Chrome控制台执行,正确流程如下:

  • 配置tsconfig.json,确保编译输出适配Node.js:
    {
      "compilerOptions": {
        "module": "CommonJS",
        "target": "ES2020",
        "outDir": "./dist"
      }
    }
    
  • 编译TypeScript代码:tsc
  • 运行编译后的JS文件:node dist/your-file.js

2. Node.js环境下的正确导入写法

在Node.js+TypeScript环境中,两种导入方式均可正常工作,只需对应正确的配置:

  • ES模块写法(需在tsconfig.json中将module设为ESNext/Node16,同时在package.json添加"type": "module"):
    import * as ms from "mysql";
    
  • CommonJS写法(tsconfig.json中module设为CommonJS即可):
    const ms = require("mysql");
    

3. 若需在浏览器中操作数据库(需后端中转)

浏览器无法直接连接MySQL,必须通过后端API中转:

  • 用Node.js编写后端接口,封装所有数据库操作逻辑
  • 前端(浏览器端)通过fetch或Axios调用这些接口完成数据交互

内容的提问来源于stack exchange,提问作者Kaosu-Niku

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:40:29