我正在嘗試學習全堆疊 Web 開發,并且我正在嘗試將 MongoDB 資料庫設定為本地 ENV 變數,但是我遇到了問題。我不知道如何將.env檔案連接到我的server.js檔案。
我的.env檔案看起來像這樣:
DATABASE_URL=mongodb://localhost/mybary
和server.js看起來像這樣:
if (process.env.NODE_ENV !== 'production') {
require('dotenv').parse()
}
const express = require('express')
const app = express()
const expressLayouts = require('express-ejs-layouts')
const indexRouter = require('./routes/index')
app.set('view engine', 'ejs')
app.set('views', __dirname '/views')
app.set('layout', 'layouts/layout')
app.use(expressLayouts)
app.use(express.static('public'))
const mongoose = require('mongoose')
mongoose.connect(process.env.DATABASE_URL, { useNewUrlParser: true })
const db = mongoose.connection
db.on('error', error => console.error(error))
db.once('open', () => console.log('Connected to Mongoose'))
app.use('/', indexRouter)
app.listen(process.env.PORT || 3000)
它拋出這個錯誤:
src.toString().split(NEWLINES_MATCH).forEach(function (line, idx) {
^
TypeError: Cannot read properties of undefined (reading 'toString')
at Object.parse (C:\Users\tangc\Desktop\site\node_modules\dotenv\lib\main.js:43:7)
at Object.<anonymous> (C:\Users\tangc\Desktop\site\server.js:4:23)
我相信問題出在第二行require('dotenv').parse(),因為我不相信我使用的是正確的,因為當服務器代碼看起來像這樣時它可以作業(對 url 進行硬編碼):
const express = require('express')
const app = express()
const expressLayouts = require('express-ejs-layouts')
const indexRouter = require('./routes/index')
app.set('view engine', 'ejs')
app.set('views', __dirname '/views')
app.set('layout', 'layouts/layout')
app.use(expressLayouts)
app.use(express.static('public'))
const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost/mybary', { useNewUrlParser: true })
const db = mongoose.connection
db.on('error', error => console.error(error))
db.once('open', () => console.log('Connected to Mongoose'))
app.use('/', indexRouter)
app.listen(process.env.PORT || 3000)
我在網上找不到解決這個問題的方法。如果有什么不清楚的,請評論。
uj5u.com熱心網友回復:
如果使用node運行server.js,可以這樣運行
node -r dotenv/config server.js
或者
export DATABASE_URL = mongodb://localhost/mybary
node server.js
僅供參考:匯出服務器上的值,應該很容易管理不同的環境。例如,不同的服務器有不同的 ip 和資料庫主機。我安裝的時候不需要設定任何配置,覆寫即可。
uj5u.com熱心網友回復:
首先 - 確保您的.env檔案位于專案的根目錄中。
第二 -dotenv盡可能早地在你的代碼中require("dotenv").config();
第三 - 您的檔案中不應有任何空格.env。所以DATABASE_URL = mongodb://localhost/mybary應該是DATABASE_URL=mongodb://localhost/mybary
編輯:這.parse()是決議您的.env檔案的引擎。我不明白您為什么要使用它,除非您想覆寫該.env檔案,就像檔案中提到的那樣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/356419.html
