Node.js连接本地PostgreSQL时import语句使用错误求助
解决Node.js中"Cannot use import statement outside a module"错误
以下是针对你的场景的排查和解决步骤:
1. 确认项目模块类型配置
- 确保项目根目录存在
package.json,没有的话执行npm init -y生成 - 检查
package.json中的type字段:- 若使用ES模块语法(
import/export),必须添加"type": "module" - 若使用CommonJS语法(
require/module.exports),移除"type": "module"字段,或显式设置为"type": "commonjs"
注意:整个项目的模块语法要统一,不要在部分文件用ES模块,部分用CommonJS,除非通过文件后缀区分(见下一步)
- 若使用ES模块语法(
2. 检查文件后缀匹配
- 若未在
package.json设置type字段:- 使用ES模块的文件需改为
.mjs后缀 - 使用CommonJS的文件需改为
.cjs后缀或保留.js
- 使用ES模块的文件需改为
- 若已设置
"type": "module",所有.js文件默认按ES模块处理,如需用CommonJS,文件需改为.cjs
3. 修正require语法的细节错误
如果你已经把import改成require,检查以下点:
- 原ES模块的导入语法:
import { Pool } from 'pg'需改为const { Pool } = require('pg'),确保大括号、变量名、包名拼写正确 - 原ES模块的导出语法:
export default pool需改为module.exports = pool;export const getUsers = () => {}需改为exports.getUsers = () => {} - 本地文件引用需添加正确的相对路径,比如
require('./db/index.js')(路径层级要对应你的项目结构)
4. 清除缓存并重启服务
- 修改配置或文件后,彻底关闭Node进程再重新启动,避免缓存导致的配置不生效
- 若使用
nodemon等热重载工具,需重启nodemon进程
内容的提问来源于stack exchange,提问作者Michael Hamilton
相关产品推荐
相关产品推荐

