Как исправить ошибку «Неожиданный идентификатор» при использовании импортированной функции из другого файла - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь использовать функцию, которую я определил в другом файле, и экспортировал ее. Но когда я использую его и запускаю сервер узлов, он выдает ошибку, как показано ниже.

Это какая-то синтаксическая ошибка, которую я здесь делаю?

Путь к папке правильныйи автозаполнение VSCode также дало тот же путь к папке для файла.

 'use strict';

  const express = require('express'),
  dotenv = require('dotenv'),  
  path = require('path');

  dotenv.config({ path: path.join('config', 'dev.env') });
  const db_connection = require('./db/db-connection');
  db_connection.dbConnection(); 
  const services = require("./services/notes");
  const app = express(),
  port = process.env.PORT || 3000;
  app.set('view engine', 'pug');
  app.set('views', path.join(__dirname, 'views'));
  app.use(express.static(path.join(__dirname, 'public')));
  app.get('/', (req, res) => { 
       res.render('index', {
                 notes: await services.getNotes()
                  });
            });
  app.listen(port, () => {  
         console.log(`Server is up and running on port ${port}`); 
        });

Файл Где я определил функцию:

 'use strict';
  const Notes = require('../models/notes');
  async function retrieveNotes() {   
          const notes = await Notes.find().toArray();  
      return notes; 
  } 
  module.exports = { getNotes: retrieveNotes };
res.render('index', {notes: await services.getNotes()});
                                ^^^^^^^^

SyntaxError: Unexpected identifier
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

Ответы [ 2 ]

2 голосов
/ 26 октября 2019

«Неожиданный идентификатор» - это ключевое слово await, которое разрешено только внутри асинхронных функций.

Как говорит Эдвин Уалела, вы можете сделать вашу app.get функцию обратного вызова асинхроннойизменив:

app.get('/', (req, res) => { ...

на:

app.get('/', async (req, res) => { ...
1 голос
/ 26 октября 2019

Попробуйте это

app.get('/', async (req, res) => { 
  let notes = await services.getNotes();
  res.render('index', {notes}); 
});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...