【问题标题】:How to access a configuration file in a different folder for NodeJS如何访问 NodeJS 不同文件夹中的配置文件
【发布时间】: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 新手,您能详细说明一下吗?
  • importexport 关键字是 ECMAScript 模块关键字,而 module.exportsrequire 是 CommonJS 关键字。虽然它们可以互操作,但在您拥有的代码库中同时使用它们有点奇怪。
  • @GuerricP 我已经编辑了我的问题并添加了 "type": "module",它位于 package.json 文件中
  • 我还编辑了抛出的错误消息

标签: node.js express


【解决方案1】:

尝试使用export default db 而不是export {db},或者如果您想使用后者,您可以像这样导入它

const {db} = require('./config/firebaseConfiguration.js');

【讨论】:

  • 我收到以下错误/Users/Documents/market/config/firebaseConfiguration.js:24 export default db ^^^^^^ SyntaxError: Unexpected token 'export'
猜你喜欢
  • 2017-11-22
  • 1970-01-01
  • 1970-01-01
  • 2018-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-11
  • 1970-01-01
相关资源
最近更新 更多