2013-07-10 2 views
0

Node.js Express Webapp에서 로컬 파일에 액세스하는 방법을 이해하는 데 문제가 있습니다.Node.js에 파일이 없습니다.

excel-parser 패키지를 사용하여/public/assets /에있는 파일을 읽으 려합니다. 색인 페이지가로드 될 때 읽어야합니다.

그래서 내가 ExpressJS 응용 프로그램을 작성하고, 내하는 index.js에서 다음을 생성하여 시작했습니다

: 나는 오류 '파일을 찾을 수 없습니다'를받을 수 있지만 뉴욕 콘솔에서

exports.index = function(req, res){ 
    var excelParser = require('excel-parser') 

    res.render('index', { title: 'Excel test' }); 

    excelParser.worksheets({ 
    inFile: '/assets/test_data.xlsx' 
    }, function(err, worksheets){ 
     if(err) console.error(err); 

     console.log('[INFO] Worksheet output: '); 
     console.log(worksheets); 
    }); 
}; 

, 그리고 '워크 시트 '는 정의되지 않았습니다.

나는 또한 다음과 같은 경로로 시도 :

  • __dirname + '/ 공공/자산/...'
  • __dirname + '...

    • /공공/자산/자산/... '

    모두 동일한 오류를 제공합니다.

  • +0

    검사 파일 권한을? –

    +0

    은 docs'__dirname'에 따르면 실제로는 전역이 아니라 각 모듈에 로컬합니다. 따라서 색인 파일의 위치에 따라 다릅니다. 색인 파일이 공용 디렉토리와 동일한 디렉토리에있을 때'path (path) '를 요구하고'path.join (__ dirname,'public/assets ')'을 할 수 있습니다 –

    답변

    1

    앱 루트 디렉토리에 상대적으로 파일을 가져와야합니다. 현재 '/ assest'는 드라이브의 루트에서 가져 오려고 시도합니다.

    var path = require('path'); 
    var root = path.dirname(require.main.filename); 
    

    을 그리고 그것을 사용 :

    당신은 모듈의 초기 주요 JS 파일의 루트 디렉토리를 얻을 수

    inFile: root + '/public/assets/test_data.xlsx' 
    
    +0

    고맙습니다. 또한 [fs.exists] (http://nodejs.org/api/fs.html#fs_fs_exists_path_callback)를 사용하여 실제로 존재하는 파일을 추적하고 있음을 알 수있었습니다. – Blaise