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
相关产品推荐
相关产品推荐

