2017-09-23 47 views
0

router.js代碼的未定義 '取代':節點JS無法讀取物業使用正則表達式


var file = __dirname + '\\text\\article.txt'; 

fs.readFile(file, 'utf8', function(err, data) { 

    var regexp1 = /\{title:(.*)\}/ig; 
    var matches1 = regexp1.exec(data); 
    data = data.replace(regexp1, ''); 

    var regexp2 = /\[img:([0-9]{1,4})\]/ig; 
    var matches2; 
    while ((matches2 = regexp2.exec(data)) != null) { 
     data = data.replace(matches2[0], '<img src=\"../../imgs/' + matches2[1] + '.png\" /\>'); 
    } 

    var regexp3 = /(?:\r\n|\r|\n)/g; 
    data = data.replace(regexp3, '<br />'); 

    respond.render('view.pug', { 
     title: matches1[1], 
     article: data 
    }); 
}); 

(?爲什麼碼框自動斷開/我用線來區分)

,如果我在網站上訪問,控制檯有以下錯誤:


C:\Dev\whitenoise\testsite\router.js:29 
data = data.replace(regexp1, ''); 
     ^   

類型錯誤:無法讀取屬性在ReadFileContext.callback的未定義 '替換'(C:\開發\白噪聲\測試網站\ router.js:29:16) 在FSReqWrap.readFileAfterOpen [按的onComplete](fs.js :366:13)


這是什麼?我找不到解決方案,請幫助

+0

檢查由控制檯記錄的數據將是不確定的。 –

+0

可能有一個錯誤'功能(錯誤,數據)'你沒有檢查。 –

回答

0

您的數據變量未定義,這意味着在讀取文件時可能會出現一些錯誤,很可能與其路徑有關。添加

var file = __dirname + '\\text\\article.txt'; 
console.log(file); 

並檢查結果是否會導致您的文件。另外,由於您正在讀取服務器上的文件,因此您應該使用url,而不是路徑。因此,它也許應該像

var file = __dirname + '/text/article.txt'; 

以「/」,而不是「\\」