【发布时间】:2021-12-20 22:57:57
【问题描述】:
我有如下配置js文件
const firebase = require('firebase')
// Your web app's Firebase configuration
// For Firebase JS SDK v7.20.0 and later, measurementId is optional
const firebaseConfig = {
apiKey: "blahblahblah",
authDomain: "ivrs-fjj.firebaseapp.com",
databaseURL: "https://ivrs-fjj.firebaseio.com",
projectId: "ivrs-fjj",
storageBucket: "ivrs-fjj.appspot.com",
messagingSenderId: "10387869293211",
appId: "1:1038786929211:web:6ed1a5djf9855105ef21e",
measurementId: "G-ZTY9VS9GV9"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
const db = firebase.database();
module.exports = {db}
然后在我的 app.js 中有以下内容:
const express = require('express')
const app = express()
const port = 3000
const {db} = require('./config/firebaseConfiguration.js');
....
app.get('', (req, res) => {
// Display the db
console.log(db)
res.render('index')
})
app.listen(port, () => console.info(`Listening on port ${port}`))
最后,我的 package.json 文件如下:
{
"name": "Market",
"version": "1.0.0",
"description": "Marketplace",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon app.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"ejs": "^3.1.6",
"express": "^4.17.1",
"firebase": "^9.6.1"
},
"devDependencies": {
"nodemon": "^2.0.15"
}
}
我使用的文件夹结构如下:
Market
---config
-------firebaseConfig.js
---node_modules
---views
---public
---app.js
---package.json
启动 express 服务器时出现以下错误:
内部/模块/cjs/loader.js:438 扔 e; ^
错误 [ERR_PACKAGE_PATH_NOT_EXPORTED]:在 /Users/Documents/Market/node_modules/firebase/package.json 中没有定义“出口”主要 在 throwExportsNotFound (internal/modules/esm/resolve.js:290:9) 在 packageExportsResolve (internal/modules/esm/resolve.js:513:3) 在 resolveExports (internal/modules/cjs/loader.js:432:36) 在 Function.Module._findPath (internal/modules/cjs/loader.js:472:31) 在 Function.Module._resolveFilename (internal/modules/cjs/loader.js:867:27) 在 Function.Module._load (internal/modules/cjs/loader.js:725:27) 在 Module.require (internal/modules/cjs/loader.js:952:19) 在需要(内部/模块/cjs/helpers.js:88:18) 在对象。 (/Users/Documents/Market/config/firebaseConfiguration.js:3:18) 在 Module._compile (internal/modules/cjs/loader.js:1063:30) { 代码:'ERR_PACKAGE_PATH_NOT_EXPORTED' }
有谁知道我做错了什么以及如何解决这个问题?!
【问题讨论】:
-
您导出为 ECMAScript 模块并导入为 CommonJS 是否有原因?
-
@GuerricP 抱歉,我是 node 新手,您能详细说明一下吗?
-
import和export关键字是 ECMAScript 模块关键字,而module.exports和require是 CommonJS 关键字。虽然它们可以互操作,但在您拥有的代码库中同时使用它们有点奇怪。 -
@GuerricP 我已经编辑了我的问题并添加了
"type": "module",它位于 package.json 文件中 -
我还编辑了抛出的错误消息