Difference between app.js and index.js in Node.js

I am new to Nodejs. I have app.js and index.js inside the route directory. I have app.use(multer....) . I also have app.post('filter-reports') , which actually uploads the contents of the file to the server.

I have the business logic that needs to be executed and configured the routes inside the routes/index.js , where I intend to configure the route /filter-reports . Please help me understand what I'm wrong about. I need to upload a file using multer , also run my business logic present in index.js file.

App.js file:

 var express = require('express'); var path = require('path'); var favicon = require('static-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var _ = require('underscore'); var cache = require('js-cache'); var multer = require('multer'); var routes = require('./routes/index'); var users = require('./routes/users'); var app = express(); app.all('*', function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With"); next(); }); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(favicon()); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded()); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', routes); app.use('/users', users); var done=false; app.use(multer({ dest: './uploads/', rename: function (fieldname, filename) { return filename+Date.now(); }, onFileUploadStart: function (file) { console.log(file.originalname + ' is starting ...') }, onFileUploadComplete: function (file) { console.log(file.fieldname + ' uploaded to ' + file.path) done=true; } })); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); app.post('filter-reports',function(req,res){ console.log('Working on the filtered reports....'); if(done==true){ console.log(req.files); res.end("File uploaded."); } }); /// error handlers // development error handler // will print stacktrace if (app.get('env') === 'development') { app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: err }); }); } // production error handler // no stacktraces leaked to user app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: {} }); }); module.exports = app; var express = require('express'); var request = require("request"); var _ = require('underscore'); var jscache = require('js-cache'); var schedule = require('node-schedule'); var filename; 

In the index.js file

 var router = express.Router(); router.post('/filter-reports', function(req, res) { console.log('Came inside the Node js router.. Now.. its all up to me to format the data....'); // console.log(req.files); // console.log('Came insode the filter-reports app url >>>>'); // if(done==true){ // console.log(req.files); // console.log('Files uploaded succesfully ....'); //res.end("File uploaded."); // } }); 

My package structure is as follows:

 app.js bin node_modules package.json public routes views 

My package.json

 { "name": "nodetest1", "version": "0.0.1", "private": true, "scripts": { "start": "node ./bin/www" }, "dependencies": { "express": "~4.2.0", "static-favicon": "~1.0.0", "morgan": "~1.0.0", "cookie-parser": "~1.0.1", "body-parser": "~1.0.0", "debug": "~0.7.4", "multer": "~0.1.6", "jade": "~1.3.0" } } 

Thanks in advance, Pradeep

+6
source share
2 answers

When you pass the folder to Node require() , it will check for package.json for the endpoint. If this is not defined, it checks index.js and finally index.node (C ++ extension format). So index.js is most likely the entry point for the module request.

Here you can check http://nodejs.org/api/modules.html#modules_folders_as_modules

I usually use app.js for the main entry point of the application.

+5
source

I have found a solution. I used router.use instead of app.use in the index.js file.

0
source

Source: https://habr.com/ru/post/980515/


All Articles