需要文件作为字符串
我使用节点+快递,我只是想知道如何我可以导入任何文件作为字符串。比方说,我有一个txt文件,我想要的是将其加载到变量中。需要文件作为字符串
var string = require("words.txt");
我反对
modules.exports = function(){
var string = "whatever";
return string;
}
如果它是一个(几个)特定扩展(S),你可以添加自己的require.extensions
处理程序:
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.readFile
与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);
});
require.extensions现在不适用于任何遇到此帖的人。 http://nodejs.org/api/globals.html#globals_require_extensions – blockloop
'过去弃用'但是'由于模块系统被锁定,这个功能可能永远不会消失。然而,它可能有微妙的错误和复杂性,最好保持原封不动。 – loretoparisi
虽然它确实被弃用,有没有什么好的选择? (这扩展了我的意思) – juandemarco
仅使用标准库:
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'));
这不是一个答案,但这可以避免创建一个函数:'const {string} = require('words.js');'where'words.js' contains'module.exports = {string:'whatever' };' –