Nodejs не распознает мои пути к server.js - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь запустить команду yarn start_dev внутри моего главного каталога C:\Users \THIAGOSAAD\Documents\DEVELOPMENT\NEORIS\ALIANSCE\aliansce-app-analyticals-panel

Однако при этом он начинает выдавать ошибку в моем "process.env.DATABASE_URL", как будто он не распознает мой "dotenv ", который находится в папке" environment "!

consign v0.1.6 Initialized in C:\Users\THIAGOSAAD\Documents\ DEVELOPMENT\NEORIS\ALIANSCE\aliansce-app-analyticals-panel

C:\Users\THIAGOSAAD\Documents\DEVELOPMENT\NEORIS\ALIANSCE\aliansce-app-analyticals-panel\node_modules\mongoose\lib\connection.js: 428
    throw new MongooseError ('The `uri` parameter to` openUri () `must be a +
    ^
MongooseError: The `uri` parameter to` openUri () `must be a string, got" undefined ". Make sure the first parameter to `mongoose.connect ()` or `mongoose.createConnection ()` is the string.
    at new MongooseError (C: \Users\THIAGOSAAD\Documents\DEVELOPMENT\ NEORIS\ALIANSCE\aliansce-app-analyticals-panel\node_modules\mongoose\lib\ error\mongooseError.js: 13:11)
    at NativeConnection.Connection.openUri (C:\Users\THIAGOSAAD\Documents\ DEVELOPMENT\NEORIS\ALIANSCE\aliansce-app-analyticals-panel\node_modules\ mongoose\lib\connection.js: 428:11)
    at Mongoose.connect (C:\Users\THIAGOSAAD\Documents\DEVELOPMENT\ NEORIS \ ALIANSCE\aliansce-app-analyticals-panel\node_modules\mongoose\lib\ index.js: 270: 15)

Если я введу URL-адрес непосредственно на моем server.js, он начнет выдавать ошибки в моем грузе:

consign v0.1.6 Initialized in C:\Users\THIAGOSAAD\Documents\DEVELOPMENT \NEORIS\ALIANSCE\aliansce-app-analyticals-panel
! Entity not found C:\Users\THIAGOSAAD\Documents\DEVELOPMENT\NEORIS\ALIANSCE\aliansce-app-analyticals-panel\routes
! Entity not found C:\Users\THIAGOSAAD\Documents\DEVELOPMENT\NEORIS\ ALIANSCE \ aliansce-app-analyticals-panel\controllers
SERVER ROLLING IN PORT 3000: ')

Но если я запускаю nodemon из каталога, в котором находится start.js, он работает: C: \Users\THIAGOSAAD\Documents\DEVELOPMENT\NEORIS\ALIANSCE\aliansce-app-analyticals-panel\app\backend\src\start.js

Я хотел бы знать, почему это происходит и как это решить, потому что яЯ пытаюсь загрузить сервер в Heroku, и он не работает, возможно, из-за той же проблемы, с которой работает yarn start_dev!

МОИ КАТАЛОГИ enter image description here

SERVER.JS

const express  = require('express');
const dotenv   = require('dotenv');
const morgan   = require('morgan');
const consign  = require('consign');
const mongoose = require('mongoose');
const nunjucks = require('nunjucks');

class Application {
    constructor(){
        this.express  = express();
        this.dotenv   = dotenv.config({ path: './environment/.env' });
        this.morgan   = morgan('dev');
        this.consign  = consign();
        this.mongoose = mongoose;
        this.nunjucks = nunjucks;

        // INICIALIZA AS FUNÇÕES AUTOMATICAMENTE
        this.initDatabase();
        this.initMiddlewares();
        this.initConsign();
        this.initViews();

    }

    initDatabase(){ 
        this.mongoose.connect(process.env.DATABASE_URL, {
            useCreateIndex:  true,
            useNewUrlParser: true
        });
    }

    initMiddlewares(){
        this.express.set('view engine', 'njk');

        this.express.use(express.static('../../app/frontend'));
        this.express.use(express.json());
        this.express.use(express.urlencoded({ extended: true }));
        this.express.use(this.morgan);
    }

    initConsign(){
        this.consign.include('./routes').then('./controllers').into(this.express);
    }

    initViews(){
        this.nunjucks.configure('./views/pages', {
            watch:      true, // SOMENTE PARA DESENVOLVIMENTO
            express:    this.express,
            autoescape: true
        });
    }

}

module.exports = new Application().express;

PACKAGE.JSON

{
  "author": "THIAGO DE BONIS CARVALHO SAAD SAUD",
  "scripts": {
    "start_dev": "nodemon app/backend/src/start.js"
  },
  "dependencies": {
    "axios": "^0.18.0",
    "bootstrap": "^4.2.1",
    "bootstrap-select": "^1.13.5",
    "chartjs": "^0.3.24",
    "consign": "^0.1.6",
    "dotenv": "^6.2.0",
    "express": "^4.16.4",
    "express-validator": "^5.3.1",
    "jquery": "^3.3.1",
    "jsonwebtoken": "^8.4.0",
    "mongoose": "^5.4.1",
    "nunjucks": "^3.1.6"
  },
  "devDependencies": {
    "morgan": "^1.9.1",
    "nodemon": "^1.18.9"
  }
}

1 Ответ

0 голосов
/ 27 декабря 2018

При настройке пути к папке dotenv задайте абсолютный путь.

this.dotenv   = dotenv.config({ path: require('path').join(__dirname, './environment') });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...