const ejs = require('ejs')
const path = require('path');
const fastify = require('fastify')();
const fastify_static = require('fastify-static');
const fastify_autoload = require('fastify-autoload');
const fastify_mongoose = require('fastify-mongoose');
const fastify_env = require('fastify-env');
let PORT;
let uri;
fastify.register(fastify_env, {
dotenv: true,
schema: {
type: 'object',
required: ['MONGO_URI', 'PORT'],
properties: {
MONGO_URI: {
type: 'string',
default: ''
},
PORT: {
type: 'string',
default: ''
}
}
}
}).ready(err => {
if (err) {
throw new Error(err);
}
PORT = fastify.config.PORT;
uri = fastify.config.MONGO_URI;
})
fastify.register(fastify_static, {
root: path.join(__dirname, 'public'),
})
fastify.register(require('point-of-view'), {
engine: {
ejs: ejs,
},
root: path.join(__dirname, 'view')
})
fastify.register(fastify_autoload, {
dir: path.join(__dirname, 'Logic/Routes'),
})
fastify.register(require('./Logic/Plugins/cache'))
fastify.register(fastify_mongoose, {
uri: uri
})
const start = async () => {
try {
await fastify.ready();
await fastify.listen(process.env.PORT);
console.log('Listening on port: ', PORT);
} catch (error) {
throw new Error(error);
}
}
start();
错误:错误:
uri
参数为必填项
在 D:\Users\Antonio\Desktop\Antonio\Work\GitHub\NextLevel\src\main.js:30:15
问题出在 fastify-mongoose 上,或者可能出在 fastify-env 上。我解释一下:如果我直接在 URI 参数中写入 URI,它就可以工作。但是使用环境变量不行..
您是否使用 dotenv,因为您应该使用,我不建议您在代码中输入密码或访问 API。
require('dotenv').config()
让我们记住当我们开始的时候
start()
我们启动 fastify 并必须调用 dotenv,否则 process.env.YOUR_VARIABLE 将不会被包含
fastify.register(fastify_mongoose, { 乌里: 乌里 }) 这里的 uri 是未定义的。它将在 uri = fastify.config.MONGO_URI; 之前执行 应该使用下面的代码
const fastify = require('fastify')({
logger: true
})
const ejs = require('ejs')
const path = require('path');
const fastify_static = require('@fastify/static');
const fastify_autoload = require('fastify-autoload');
const fastify_mongoose = require('fastify-mongoose');
const fastify_env = require('@fastify/env');
require("dotenv").config();
let PORT;
let uri;
fastify.register(fastify_env, {
dotenv: true,
schema: {
type: 'object',
required: ['MONGO_URI', 'PORT'],
properties: {
MONGO_URI: {
type: 'string',
default: ''
},
PORT: {
type: 'string',
default: ''
}
}
}
}).ready(err => {
console.log(fastify.config,'fastify.config')
if (err) {
throw new Error(err);
}
PORT = fastify.config.PORT;
uri = fastify.config.MONGO_URI;
})
fastify.register(fastify_static, {
root: path.join(__dirname, 'public'),
})
fastify.register(require('@fastify/view'), {
engine: {
ejs: ejs,
},
root: path.join(__dirname, 'view')
})
// fastify.register(fastify_autoload, {
// dir: path.join(__dirname, 'Logic/Routes'),
// })
// fastify.register(require('./Logic/Plugins/cache'))
console.log(uri,'uriuriuriuriuri',process.env,'env')
fastify.register(fastify_mongoose, {
uri: process.env.MONGO_URI
})
const start = async () => {
try {
await fastify.ready();
await fastify.listen(process.env.PORT);
console.log('Listening on port: ', PORT);
} catch (error) {
throw new Error(error);
}
}
start();
强文字