2012-10-05 40 views
46

Tôi đang sử dụng nút + express và tôi chỉ tự hỏi làm thế nào tôi có thể nhập bất kỳ tệp nào dưới dạng chuỗi. Cho phép nói rằng tôi có một tập tin txt tất cả tôi muốn là tải nó vào một biến như vậy.yêu cầu tệp dưới dạng chuỗi

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

Tôi chống lại

modules.exports = function(){ 

    var string = "whatever"; 

    return string; 

} 
+1

Đây không phải là câu trả lời, nhưng điều này tránh tạo ra một hàm: 'const {string} = require ('words.js');' where 'words.js' chứa' module.exports = {string: 'whatever' }; ' –

Trả lời

68

Nếu nó cho một (vài) mở rộng cụ thể (s), bạn có thể thêm riêng require.extensions xử lý của bạn:

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 

Nếu không, bạn có thể trộn fs.readFile với require.resolve:

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 hiện không được chấp nhận cho bất kỳ ai gặp phải bài đăng này. http://nodejs.org/api/globals.html#globals_require_extensions – blockloop

+1

'Không được chấp nhận trong quá khứ' nhưng' Vì hệ thống mô-đun bị khóa, tính năng này có thể sẽ không bao giờ biến mất. Tuy nhiên, nó có thể có lỗi và phức tạp tinh vi tốt nhất là không bị ảnh hưởng.' – loretoparisi

+1

Trong khi nó thực sự là không được chấp nhận, là có bất kỳ thay thế tốt? (mà mở rộng yêu cầu, ý tôi là) – juandemarco

3

Chỉ sử dụng libs chuẩn:

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')); 
Các vấn đề liên quan