如何在同一Node.js文件中同时使用require和import语句
解决方案
你遇到的SyntaxError: Cannot use import statement outside a module报错,是因为未配置"type": "module"时Node默认按CommonJS规范解析.js文件,不支持import语法;而配置后全局require方法被移除,所以原有require语句报错,可根据你的实际需求选择对应方案:
情况1:可调整package.json的模块配置
删除package.json中的"type": "module"配置项,直接使用如下写法导入readline即可:
const readline = require("readline"); const { clearScreenDown } = readline;
此时所有require语法都可以正常运行,不会出现import相关报错。
情况2:必须保留"type": "module"配置,同时需要兼容require语法
ES模块模式下Node没有全局require方法,你可以通过官方提供的createRequire方法手动创建require函数,即可同时使用两种导入方式:
- 先在文件顶部初始化require函数:
import { createRequire } from "module"; const require = createRequire(import.meta.url);
- 再按照你熟悉的require语法导入readline:
const readline = require("readline"); const { clearScreenDown } = readline;
注意事项
- 该方案要求Node.js版本 >= 12.2.0
- 配置完成后可同时使用原生import和你创建的require导入不同类型的模块,不会产生冲突
内容的提问来源于stack exchange,提问作者Israa
相关产品推荐
相关产品推荐

