2012-10-05 26 views
46

Düğüm + express kullanıyorum ve sadece bir dosyayı bir dize olarak nasıl alabileceğimi merak ediyorum. Benim istediğim bir txt dosyasına sahip olduğumu söyleyelim.string olarak dosya gerektiriyor

var string = require("words.txt"); 

Sana filesystem modülünden readFile işlevi kullanmak gerekecek

modules.exports = function(){ 

    var string = "whatever"; 

    return string; 

} 
+1

Bu bir yanıt değil, ancak bu bir işlev oluşturmayı önler: 'const {string} = require ('words.js');' words.js' 'içerir' module.exports = {string: 'her neyse' }; ' –

cevap

68

, kendi require.extensions işleyicisi ekleyebilirsiniz: karıştırabilir, Aksi

var fs = require('fs'); 

require.extensions['.txt'] = function (module, filename) { 
    module.exports = fs.readFileSync(filename, 'utf8'); 
}; 

var words = require("./words.txt"); 

console.log(typeof words); // string 

fs.readFilerequire.resolve ile:

var fs = require('fs'); 

function readModuleFile(path, callback) { 
    try { 
     var filename = require.resolve(path); 
     fs.readFile(filename, 'utf8', callback); 
    } catch (e) { 
     callback(e); 
    } 
} 

readModuleFile('./words.txt', function (err, words) { 
    console.log(words); 
}); 
+31

require.extensions şimdi bu gönderiye giren herkes için kullanımdan kaldırılmıştır. http://nodejs.org/api/globals.html#globals_require_extensions – blockloop

+1

'Geçmişte eskimiş 'ancak' Modül sistemi kilitlendiğinden, bu özellik muhtemelen hiçbir zaman gitmeyecek. Bununla birlikte, el değmemiş en iyi soluk ve karmaşıklıklara sahip olabilir. ' – loretoparisi

+1

Gerçekten de kullanımdan kaldırılmış olsa da, iyi bir alternatif var mı? (bu gerektirir gerektirir, demek istediğim) – juandemarco

3

Yalnızca standart lib'leri kullanma:

var fs = require('fs'); 
var exec = require('child_process').exec; 

// async 
fs.readFile('./data.txt', 'utf8', function(oErr, sText) { 
    console.log(sText); 
}); 

// sync 
console.log(fs.readFileSync('./data.txt', 'utf8')); 
İlgili konular