在index.js
之前出現了一些路由中間件,它正在崩潰我的應用程序,因爲執行順序使我無法按時加載我的dotenv文件。Express.js應用程序入口點
我想在所有內容之前加載我的dotenv文件,以確保所有需要它的模塊都能訪問它。
但是,在調試此問題時,我注意到應用程序入口點頂部的console.log
仍然不會首先記錄。
文件夾結構:
src
------index.js
middleware
------auth.js
routes
------auth.route.js
------index.js
.env
代碼,記錄第一middleware/auth.js
:
import { Strategy as JwtStrategy, ExtractJwt } from 'passport-jwt'
module.exports = function() {
console.log('this prints first with undefined', process.env.JWT_SECRET) <-------
這被稱爲auth.route.js
import auth from '../middleware/auth'
const userRouter = express.Router()
userRouter.get('/dashboard', auth().authenticate(), function(req, res) {
res.send('Authenticated, user id is: ' + req.user.id)
})
index.js
文件:
console.log("this prints second"); <---------
(...)
import routes from './routes'
import express from 'express'
import auth from './middleware/auth'
require('dotenv').config({ silent: process.env.NODE_ENV === 'production' })
const app = express();
(...)
app.use('/api', routes);
您尚未指定此服務器的入口點是什麼。 –
它是'index.js' @KevinB – softcode
沒錯。所以,你從中間件/ auth導入auth,所以middelware/auth運行,以便你可以從它導入,然後你需要dotenv。說得通。你實際上應該看到你所看到的。 –