2017-09-29 11 views
0

export/require in node/express에 대한 튜토리얼을 읽고, 누군가 내 예를 설명해 줄 수 있는지 궁금합니다. app.js의 라우팅이 작동하지 않는 이유는 무엇입니까? 내가 수출해야하고 그것을 작동하도록 요구해야합니까? 고마워요!올바르게 노드 j에서 내보내고 필요합니까?

하는 index.js :

'use strict' 

    var express = require('express'); 

    var app = express(); 
    module.exports = app; 

    var PORT = process.env.PORT || 1337; 
     app.listen(PORT, function() { 
     console.log('Server is listening!'); 
    }) 

app.js :

var express = require('express'); 
    var bodyParser = require('body-parser'); 
    var path = require('path'); 
    var app = express(); 
    //var app=require('./index.js'); 
    module.exports = function() { 
     app.use(express.static(path.join(__dirname, '../public'))); 
     app.use(express.static(path.join(__dirname, '../browser'))); 
    } 
+0

정확히 작동하지 않는 기능은 무엇입니까? 어떤 URL을 사용할 것으로 예상되며 시도 할 때 어떤 일이 발생합니까? – jfriend00

+0

전체 코드가 단 하나의 파일에있을 때 app.use를 통해 내 공용 폴더에있는 index.html 파일을 정적으로 제공했습니다. 코드를 2 개의 파일로 분리하면 더 이상 작동하지 않습니다 – javascripting

답변

1
  1. 귀하의 예제는 제대로 작동하지 않습니다 적어도 당신은 두 파일 var app = express()에 두 개의 별도의 명시 서버를 선언하기 때문이다.
  2. 이 코드는 대개 내보내기/요구시 연습에 적합하지 않습니다. 왜냐하면 그러한 서버 초기화는 대개 하나의 파일에 배치되기 때문입니다.

어쨌든, 당신은이 방법으로 할하자,이 예제를 사용하고 작동하게하려는 경우 :

./하는 index.js

'use strict' 

var express = require('express'); 
var setupServing = require('./setupServing.js'); //import our function 
var PORT = process.env.PORT || 1337; 

var app = express(); //create express app 
setupServing(app); //call imported function to config our app 

app.listen(PORT, function() { //start 
    console.log('Server is listening!'); 
}) 

./ setupServing.js

이 예제는 여전히 논리적이지 않으며 실제 프로젝트에서 그러한 코드를 직면하게 될 것이라고 생각하지 않지만 어쨌든 nodejs에서 내보내기/필요성을 입증 할 것입니다.

+0

감사합니다! 나에게 몇 가지를 설명 할 수 있습니까? 왜 미들웨어 경로를 분리하는 것은 나쁜 습관입니까? 그리고 내 서버를 시작하는 위치는 어딘가에 있습니다. 실제로이 부분을 보았고 시작 지점 (시작 서버 만)을 한 파일에두고 나머지를 생각하는 것이 좋습니다. 다른 곳에서. 또한 routes 파일이 필요하지만 export (module.exports = app)하면 index.js 파일을 필요로하지 않고 app.use ...에 대한 app ...을 사용할 수 없습니까? 너의 작품 그래서 난 그냥 모든 것을 이해하려고 노력하고 있습니다. 고마워요 :) – javascripting

+0

모든 경로와 미들웨어를 별도의 폴더에 저장하는 것이 좋습니다. 그런 다음 파일을 라우트하고 특정 경로에 특정 미들웨어를 사용하려면 미들웨어가 필요합니다. 예제에는 실제로 경로가 없습니다. 그것은 'public'디렉토리에서 파일을 제공하는 정적 서버 일뿐입니다. –

+0

자세한 예제 및 설명은 다음을 확인하십시오. https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/routes –