要求文件为字符串

我正在使用 node + Express,我只是想知道如何将任何文件导入为字符串。假设我有一个 txt 文件,我想要的就是把它加载到一个变量中。

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

我反对

modules.exports = function(){


var string = "whatever";


return string;


}
133186 次浏览

您必须使用来自 filesystem模块的 readFile函数。

Http://nodejs.org/docs/v0.3.1/api/fs.html#fs.readfile

如果是针对(一些)特定的扩展,您可以添加您自己的 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.readFilerequire.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);
});

要将 CSS 文件读取到 String,请使用下面的代码。

const fs = require('fs')
const path = require('path')


const css = fs.readFileSync(path.resolve(__dirname, 'email.css'), 'utf8')

ES6:

import fs from 'fs'
import path from 'path'


let css = fs.readFileSync(path.resolve(__dirname, 'email.css'), 'utf8')

你可以要求。Json 文件,包含 node.js 和 TypeScript。这是唯一支持适合序列化文本的必需()格式。您可以使用编译时工具将文件打包到 json 中,例如 https://github.com/cancerberoSgx/fs-to-json

选择的答案是 不赞成不推荐了。 NodeJS 文档 暗示其他方法如:

通过其他 Node.js 程序加载模块

但它不再扩张了。

  • 您可以像这样使用一个非常简单的库: < a href = “ https://www.npmjs.com/package/demand-text”rel = “ norefrer”> request-text

  • 或者自己实现它(如上面的包所示:)

    var fs = require('fs');
    module.exports = function(name, require) {
    return fs.readFileSync(require.resolve(name)).toString();
    };
    

我最简单的解决办法是

var string = require("fs").readFileSync("file.txt", 'utf8')
console.log("string = ", string);