Как запустить функцию приложения, например, получить и опубликовать в другом файле - PullRequest
2 голосов
/ 20 марта 2019

Я создал файл, который создает приложение промежуточного программного обеспечения.

Я определил функцию приложения в отдельном файле.

Как запустить функцию приложения.

Мой app.js файл

const express = require('express')
const cors = require('cors')
const mysql = require('mysql')
const bodyParser = require('body-parser')
const users = require('./users')
const app = express()
app.use(cors());
app.use(bodyParser.json());
app.options('*',cors());

app.listen('3001' ,(err)=>{
  if(err)
  console.log(err);
  else{
    console.log('server is running on port 3001');
  }
})
module.exports.app = app

мой другой файл имеет следующее содержимое, и скажем, что это my-other-file.js

const app = require('./app')

//get request for all checklist details
app.get('/getallusers',async (req,res)=>{
  let sql =query('SELECT', 'users','user_deleted = 0', 'firstname,lastname,name,email,photo,admin')
  var results =await  dbQuery(res,sql)
  console.log(results);
  res.status(200).json({
    status: 200,
    message : `Found ${results.length} users`,
    users: results
  })
})

Ответы [ 4 ]

1 голос
/ 20 марта 2019

Проблема в вашем app.js файле, который вы выполняете с именем , то есть

module.exports.app = app;

Это означает, что при импорте вам нужно быть явным:

const app = require('./app').app;

Вместо этого, если вы сделаете app экспорт по умолчанию , т. Е.

module.exports = app

Тогда вам не нужно менять способ, которым вам нужен файл в my-other-file.

0 голосов
/ 22 марта 2019

Мой ответ.

App.js

const express = require('express')
const cors = require('cors')
const mysql = require('mysql')
const bodyParser = require('body-parser')
const users = require('./users')
const app = express()
app.use(cors());
app.use(bodyParser.json());
app.options('*',cors());

// Don't call listen here
// app.listen('3001' ,(err)=>{
  // if(err) console.log(err);
//   else console.log('server is running on port 3001');
// })
module.exports = app

index.js - файл, вызываемый узлом.Например: узел index.js

const app = require("./app.js");

const port = "3001";

app.listen(port, () => console.log("Started listening"));
0 голосов
/ 20 марта 2019

При запуске файла nodejs с помощью CLI (node myapp.js) он будет запускать только код файла.Таким образом, вы должны тщательно организовать свои файлы так, чтобы они зависели друг от друга правильным образом.

При вызове оператора require() узел запускает необходимый js-код.Таким образом, вы захотите иметь один файл js, который требует всех других зависимостей файлов js.

Таким образом, вы можете запустить ваше приложение следующим образом: node my-other-file.js.Для этого потребуется файл app.js, запустите его, затем запустите код my-other-file, как вы ожидаете.

Но это может быть не тот порядок, который вы намереваетесь, поэтому вам следует импортировать my-other-file из app.js и запустите определенную им функцию.

app.js

const express = require('express')
const cors = require('cors')
const mysql = require('mysql')
const bodyParser = require('body-parser')
const users = require('./users')
const declareEndpoints = require('./my-other-file')
const app = express()
app.use(cors());
app.use(bodyParser.json());
app.options('*',cors());

app.listen('3001' ,(err)=>{
  if(err)
  console.log(err);
  else{
    console.log('server is running on port 3001');
  }
})
// Call the function from my-other-file
declareEndpoints(app)
module.exports.app = app

my-other-file.js

//export as function to be used from the main js file
export default function declareEndpoints(app) {
   app.get('/getallusers',async (req,res) => {
      let sql =query('SELECT', 'users','user_deleted = 'firstname,lastname,name,email,photo,admin')
      var results =await  dbQuery(res,sql)
      console.log(results);
      res.status(200).json({
         status: 200,
         message : `Found ${results.length} users`,
         users: results
      })
   })
}
0 голосов
/ 20 марта 2019

Простой ответ на ваш вопрос - выполнить следующую команду

node my-other-file.js

если вы измените

module.exports.app = app до module.exports = app в app.js файле

Если вы ищете руководство по структуре папок, то следующие ссылки помогут вам

ExpressJS Как структурировать приложение?

https://www.terlici.com/2014/08/25/best-practices-express-structure.html

https://medium.freecodecamp.org/how-to-write-a-production-ready-node-and-express-app-f214f0b17d8c

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