2015-01-05 8 views
6

में अंतर मैं नोडजेस के लिए नौसिखिया हूं। मेरे पास route निर्देशिका के अंदर एक app.js और index.js है। मेरे पास app.use(multer....) है। मेरे पास app.post('filter-reports') भी परिभाषित किया गया है जो वास्तव में सर्वर पर फ़ाइल सामग्री अपलोड करता है।app.js और index.js के बीच Node.js

मेरे पास व्यवसाय तर्क है और routes/index.js फ़ाइल के अंदर मार्ग कॉन्फ़िगर किया गया है जहां मैं /filter-reports मार्ग को कॉन्फ़िगर करना चाहता हूं। कृपया मुझे यह समझने में सहायता करें कि मैं कहां गलत हूं। मुझे multer का उपयोग कर फ़ाइल अपलोड करने की आवश्यकता है index.js फ़ाइल में मेरा व्यवसाय तर्क भी चलाएं।

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; 

index.js फ़ाइल में

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."); 
    // } 
}); 

मेरे पैकेज संरचना नीचे की तरह है::

app.js bin node_modules package.json public routes views 

मेरे package.json

है

स्रोत कोड app.js

{ 
    "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" 
    } 
} 

अग्रिम धन्यवाद, प्रदीप

+1

वास्तव में समस्या क्या है? –

+0

अनुरोध संसाधित करने के लिए व्यवसाय तर्क मार्ग अनुक्रमणिका के तहत मेरे index.js में मौजूद है। फ़ाइल अपलोड करने के लिए app.js फ़ाइल में 'multer' है। जब मैं app.js फ़ाइल के अंदर 'app.post' का उपयोग करता हूं तो index.js के अंदर का मार्ग बुलाया नहीं जा रहा है। अगर मैं app.js के अंदर 'app.post' को हटा देता हूं, तो फ़ाइल अपलोड नहीं हो रहा है लेकिन index.js के अंदर का मार्ग काम कर रहा है। मुझे फ़ाइल को अपलोड करने की आवश्यकता है और साथ ही मेरी 'index.js' फ़ाइल के अंदर' पोस्ट 'फ़ंक्शन को कॉल करने की आवश्यकता है। – zilcuanu

उत्तर

5

जब आप नोड के require() के लिए एक फ़ोल्डर पारित, यह एक अंत बिंदु के लिए एक package.json के लिए जाँच करेगा। यदि यह परिभाषित नहीं किया गया है, तो यह index.js, और अंत में index.node (एक सी ++ एक्सटेंशन प्रारूप) की जांच करता है। तो index.js मॉड्यूल की आवश्यकता के लिए प्रवेश बिंदु सबसे अधिक संभावना है।

आप यहाँ जाँच कर सकते हैं http://nodejs.org/api/modules.html#modules_folders_as_modules

आमतौर पर मैं आवेदन मुख्य प्रवेश बिंदु के लिए app.js का उपयोग करें।

+2

क्या आप थोड़ा और समझा सकते हैं। निर्देशिका संरचना और package.json फ़ाइल के साथ मेरा प्रश्न अपडेट किया है। – zilcuanu

0

मुझे समाधान मिला। मैंने के बजाय फ़ाइल में router.use का उपयोग किया था।

संबंधित मुद्दे