fastify-mongoose 不起作用,node.js 和 fastify

问题描述 投票:0回答:2
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,它就可以工作。但是使用环境变量不行..

javascript node.js mongoose loading fastify
2个回答
0
投票

您是否使用 dotenv,因为您应该使用,我不建议您在代码中输入密码或访问 API。

require('dotenv').config()

让我们记住当我们开始的时候

 start()

我们启动 fastify 并必须调用 dotenv,否则 process.env.YOUR_VARIABLE 将不会被包含


0
投票

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();

强文字

© www.soinside.com 2019 - 2024. All rights reserved.