如何运行其他文件中定义的应用程序功能(如获取和发布)

时间:2019-03-20 11:24:20

标签: javascript node.js express

我创建了一个文件,该文件创建了快速中间件应用程序。

我在单独的文件中定义了app函数。

如何运行应用程序功能。

我的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 个答案:

答案 0 :(得分:1)

问题出在您的app.js文件中,您正在执行名为 的导出,即

module.exports.app = app;

这意味着导入时需要明确:

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

相反,如果您将app设置为默认值,即

module.exports = app

然后,您无需更改my-other-file中文件的要求。

答案 1 :(得分:0)

您的问题的简单答案是通过运行以下命令

node my-other-file.js

如果您更改

module.exports.app = appmodule.exports = app文件中的app.js

如果您正在寻找文件夹结构指南,则以下链接将为您提供帮助

ExpressJS How to structure an application?

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

答案 2 :(得分:0)

使用CLI(node myapp.js)运行nodejs文件时,它将仅运行文件代码。因此,您必须仔细组织文件,以正确的方式相互依赖。

调用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
      })
   })
}

答案 3 :(得分:0)

我的答案。

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