如何在Node.js+Express API服务器中导入并使用Firestore的addPost函数?
解决Node.js/Express中导入ES模块Firebase工具函数的问题
方法一:将Express服务切换为ES模块
- 在项目根目录的
package.json中添加配置:
这会让Node.js把所有"type": "module".js文件默认当作ES模块处理,之后你就能在server/index.js里直接用ES导入语法:
注意:改完后项目里所有用import { addPost } from '../index.js'require的地方都要换成import,确保其他依赖也适配ES模块规范。
方法二:单独标记Express服务文件为ES模块
不想全局修改的话,把server/index.js的后缀改成.mjs,然后在这个文件里用import导入函数:
import { addPost } from '../index.js'
这种方式只影响这个单个文件,其他.js文件仍保持CommonJS规范。
方法三:让Firebase工具文件兼容两种模块系统
修改src/services/firebase/index.js,同时支持ES模块和CommonJS导出:
// 保留原有的ES模块导入(适配React) import { getFirestore, collection, addDoc } from "firebase/firestore"; // ... 你的addPost函数实现代码 // 添加CommonJS导出逻辑 if (typeof module !== 'undefined' && module.exports) { module.exports = { addPost }; } // 保留ES模块导出 export { addPost };
改完后,React里用import、Express里用const { addPost } = require('../index.js')都能正常调用函数。
内容的提问来源于stack exchange,提问作者ODEL
相关产品推荐
相关产品推荐

