2017-10-04 19 views
0

1つのファイルですべて機能するコード(単純なファイルアップローダ)を作成しました。コードをいくつかのファイルに分割したいと思います。私は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とresponseオブジェクトをパラメータとして含める必要があります。

としてあなたの関数を変更し

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

そして今、ルータファイルでこの機能をインポートします。

関連する問題