2017-10-04 1 views
0

하나의 파일에서 모두 잘 작동하는 코드 (간단한 파일 업 로더)를 만들었습니다. 코드를 여러 파일로 나누고 싶습니다. routes.js (경로 제어), imports.js (내 함수 포함) 및 내 서버가 필요합니다. 나는 그 길에서 수입품을 불러들이는 데 어려움을 겪고있다. 오류 가져 오기 기능이 아닙니다. 고맙습니다!!노드 JS 경로에서 기능 분리

Server.js ------------------------------------------- ----------------

var express = require('express');  
var app = express(); 
var passport = require('passport'); 
var ejs = require('ejs'); 
var bodyParser = require('body-parser'); 
var imports = require('./src/import.js'); 
var port = process.env.PORT || 8080; 
app.use(express.static('public')); 

require('./src/import')(imports); 
require('./app/routes.js')(app, imports); 

app.listen(port); 
console.log('The app is running on port ' + port) 

routes.js ------------------------ -----------------------------------

module.exports = function (app, imports) { 

    //home Page 
    app.get('/', function (req, res) { 
     res.render('index.ejs'); 
    }); 

    app.post('/import', imports(){}); 
}; 

import.js ----- ----------------------------------------

var multer = require('multer'); 
var fs = require('fs'); 



module.exports = function (imports) { 

    var imports = multer({ dest: 'C:/Users/ron/temp/' }); 
    var type = imports.single('file'); 

    imports(type, function (req, res) {//removed type 


     var fileType = req.file.type; 

     console.log('output' + req.file); 
     console.log(fileType); 

     var file = __dirname + "/" + req.file.name; 
     fs.readFile(req.file.path, function (err, data) { 
      fs.writeFile(file, data, function (err) { 

       if (err) { 
        console.log(err); 
       } else { 

        var fileName = req.file.originalname; 

        response = { 
         message: 'File uploaded successfully', 
         fileinfo: req.file, 
         filename: fileName 
        }; 
       } 
       console.log(response); 
       res.end(JSON.stringify(response)); 

       var filePath = req.file.destination + req.file.originalname; 

       fs.rename(req.file.destination + req.file.filename, req.file.destination + req.file.originalname, function (err) { 
        if (err) console.log('ERROR:' + err); 
        console.log('the path is...' + filePath); 
        console.log('the name is...' + fileName); 

       }); 
      }); 
     }); 
    }); 
}; 

단일 파일 솔루션 ........... .......................................

var express = require('express'); 
var app = express(); 
var passport = require('passport'); 
var ejs = require('ejs'); 
var bodyParser = require('body-parser'); 
var multer = require('multer'); 
var fs = require('fs'); 

var port = process.env.PORT || 8080; 

var imports = multer({ dest: 'C:/Users/ron/temp/' }); 
var type = imports.single('file'); 
var urlencodedParser = bodyParser.urlencoded({extended: false}); 

app.use(bodyParser.urlencoded({ extended: false })); 
app.use(express.static('public')); 


app.get('/', function (req, res) { 
    res.render('index.ejs'); 
}); 

app.post('/import', type, function (req, res) {//removed type 


    var fileType = req.file.type; 

    console.log('output' + req.file); 
    console.log(fileType); 

    var file = __dirname + "/" + req.file.name; 
    fs.readFile(req.file.path, function (err, data) { 
     fs.writeFile(file, data, function (err) { 

      if (err) { 
       console.log(err); 
      } else { 

       var fileName = req.file.originalname; 

       response = { 
        message: 'File uploaded successfully', 
        fileinfo: req.file, 
        filename: fileName 
       }; 
      } 
      console.log(response); 
      res.end(JSON.stringify(response)); 

      var filePath = req.file.destination + req.file.originalname; 

      fs.rename(req.file.destination + req.file.filename, req.file.destination + req.file.originalname, function (err) { 
       if (err) console.log('ERROR:' + err); 
       console.log('the path is...' + filePath); 
       console.log('the name is...' + fileName); 

      }); 
     }); 
    }); 
}); 

app.listen(port); 
console.log('The app is running on port ' + port) 
+0

파일을 깨는 방법에 대해 혼란스러워합니다. 'module.exports = function (imports) {var imports = ...'이것은 처음에는 아무 의미가 없습니다. – Keith

+0

나는 Udemy 코스의 예를 따르려고했다. 이 일을 더 잘하도록 도와 줄 수 있습니까? 아니면 나를 자원으로 안내하십시오. – RMichalowski

+0

별도의 파일로 분리하기 전에 원본이 있습니까? – Keith

답변

0

모든 기능 당신은 라우터에 reqest와 응답 객체를 매개 변수로 포함해야합니다.

는 다음과 같이 함수를 변경

:

function imports (req,res){ 
//your code 
} 
module.exports ={ 
imports:imports 
} 

그리고 지금 라우터 파일에서이 기능을 가져옵니다.