2016-08-19 52 views
2

我收到以下錯誤下面執行代碼:的NodeJS - 打印在另一個JS未定義主叫功能文件

Failed: path must be a string 
Stack: 
    TypeError: path must be a string 
     at TypeError (native) 
     at Object.fs.readFile (fs.js:250:11) 

的代碼是冉如下:

this.getNodeValueFromXML = function(xmlPath,node){ 
    var self = this; 
    try { 
     var file = path.join(__dirname, xmlPath) 
     fs.readFile(file, function(err, data) { 
      if(err){ 
       logger.warnLogger(err,'Error while processing XML file!!'); 
      } 
      else{ 
       parser.parseString(data, function (err, result) { 
        if(err){ 
         logger.warnLogger(err,'Not a valid file!!'); 
        } 
        else { 
         var value=self.getValueFromJson(result,node); 
         return value; 
        } 
       }); 
      } 
     }); 
    } 
    catch(e){ 
     if (e.code !== 'ENOENT') { 
      throw e 
     } else { 
      logger.warnLogger(e,'File not found!'); 
     } 
    } 
}; 

我打電話這使用以下語法

commonFunction.getNodeValueFromXML("../my.xml",'user.name'); 

此前據給錯誤其他js文件。將更改作爲path.join(__dirname, xmlPath)進行修改後,它可以正常工作,但調用另一個函數js未定義文件打印。

有人能幫助

+0

使用'path.join(__目錄名稱,「../ my.xml」)' –

+0

仍然給了同樣的錯誤 – Abhinav

+0

@Abhinav我剛纔打電話給你功能相同的文件與一些靜態文件的路徑和它的正常工作和獲得「文件未找到!!「,你能重新檢查你的文件上的錯誤和行號嗎? – abdulbarik

回答

0

使用path.join(__dirname, '../my.xml')解決問題如下:

Failed: path must be a string 
Stack: 
    TypeError: path must be a string 
     at TypeError (native) 
     at Object.fs.readFile (fs.js:250:11) 

對於從另一個文件我修改代碼以使用callback函數調用函數。

相關問題