簡體   English   中英

節點js無法使用regexp讀取未定義的屬性“替換”

[英]node js Cannot read property 'replace' of undefined using regexp

router.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, '');
           ^            

TypeError:無法讀取FSReqWrap.readFileAfterOpen處ReadFileContext.callback(C:\\ Dev \\ whitenoise \\ testsite \\ router.js:29:16)中未定義的屬性“替換”(作為oncomplete)(fs.js:366:13)


這是什么?? 我在Google中找不到解決方案,請幫助

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

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

並檢查結果是否將導致您的文件。 另外,由於您正在讀取服務器上的文件,因此應使用url,而不是路徑。 所以大概應該是這樣

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

用“ /”代替“ \\\\”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM