Это мой код на файле 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.info('Connected to Mongoose'))
app.use('/', indexRouter)
app.listen(process.env.PORT || 3000)
Когда я пытаюсь запустить сервер, мне показывается эта ошибка
C:\Users\mikae\Desktop\Books\node_modules\dotenv\lib\main.js:42
src.toString().split(NEWLINES_MATCH).forEach(function (line, idx) {
^
TypeError: Cannot read property 'toString' of undefined
at Object.parse (C:\Users\mikae\Desktop\Books\node_modules\dotenv\lib\main.js:42:7)
at Object.<anonymous> (C:\Users\mikae\Desktop\Books\server.js:2:23)
at Module._compile (internal/modules/cjs/loader.js:1015:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10)
at Module.load (internal/modules/cjs/loader.js:879:32)
at Function.Module._load (internal/modules/cjs/loader.js:724:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
at internal/main/run_main_module.js:17:47
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `node server.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\mikae\AppData\Roaming\npm-cache\_logs\2020-12-18T03_27_14_460Z-debug.log
Я пытаюсь создать сервер с ReactJS, Express и MongoDB. Это произошло, когда я попытался поместить код MongoDB в свой файл.
@PatrickEvans Итак, какое значение мне нужно поставить?
dotenv.parse используется с буфером или строкой, содержащей ваши переменные среды, и возвращает объект:
const envVariables = Buffer.from('API_KEY=apikey')
const config = dotenv.parse(envVariables)
console.info(config); // {API_KEY: 'apikey'};
если вы хотите загрузить файл .env, используйте dotenv.config:
dotenv.config();
if (process.env.NODE_ENV !== 'production'){ require('dotenv').config() }
Чтобы помочь будущим читателям, а также человеку, который изначально задал вопрос, не могли бы вы отредактировать свой ответ, чтобы немного объяснить, как этот код решает проблему?