node.js - 在我的 seed.js 文件(NODEJS)中未定义 Env Vars
问题描述
所以我正在处理这个项目,一切正常,我的 .env 正在工作,所有 env 变量都在变体文件中定义。然后我决定为我的数据库制作一个种子文件,但它无法从 .env 读取 MONGODB_URL 值,并且它的输出未定义。
虽然它几乎可以在我使用它的任何地方工作(相同的变量!)
我已经在我的应用程序中配置了 .env。
这是我的 server.js:
#!/usr/bin/env node
require('dotenv').config()
require('./db/mongoose.js')
const cors = require("cors")
const express = require('express')
const userRouter = require('./routers/user.router')
const answerRouter = require('./routers/answer.router')
const questionRouter = require('./routers/question.router')
console.log(process.env.MONGODB_URL) // works!
const port = process.env.SERVER_PORT // port = 5000
const app = express()
app.use(express.json())
app.use(cors())
app.use(userRouter)
app.use(questionRouter)
app.use(answerRouter)
app.listen(port,()=>{
console.log("server is up on port: " + port) //server is up on port 5000
})
这是我的 .env
SERVER_PORT = 5000
MONGODB_URL='mongodb://127.0.0.1:27017/app0-dev-database'
这是我的seed.js
const seeder = require('mongoose-seed');
console.log(process.env.MONGODB_URL) // undefined
seeder.connect(process.env.MONGODB_URL, function(){ // error
seeder.loadModels([
'./server/models/user.model.js',
'./server/models/question.model.js'
]);
seeder.clearModels (['User','Question' ], function(){
seeder.populateModels(data, function (err, done){
if(err) {
return console.log("seed err", err)
}
if (done) {
return console.log("seed done", done);
}
seeder.disconnect()
})
})
})
这是我的目录结构
MONGODB_URL 的值未定义
我需要知道如何读取它的值
先感谢您
解决方案
如果 seed.js 不以任何方式要求/加载 server.js,你就不能依赖dotenv
那里的调用——你需要在两个文件中都需要它。
在“seed.js”中,您应该编写以下内容:
require('dotenv').config()
推荐阅读
- javascript - 如何在 JSON 解析中将指数值解析为十进制
- stripe-payments - Stripe Orders API 税务回调
- redux - 如何让观察者传奇仅在动作模式的第一次调度时触发工人传奇?
- html - 如何获得此 xpath 的第二个值?
- powershell - 在 Powershell 的列表框中列出 AD 用户
- java - 从多个 EditText 中提取数据而不重复代码
- bash - 如何在来自 Powershell 的单独新窗口上使用一些参数启动 git-bash
- html - 网站在 Android 上运行,但在 iphone 上看起来很奇怪
- ios - SwiftUI 程序化导航。如何使用绑定
当方法需要绑定时 ? - python - 使用 beautifulsoup 提取了错误的文本