要求文件为字符串

时间:2012-10-05 19:11:41

标签: string node.js express require

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

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

我反对

modules.exports = function(){

    var string = "whatever";

    return string;

}

5 个答案:

答案 0 :(得分:101)

如果是(少数)特定扩展名,您可以添加自己的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);
});

答案 1 :(得分:13)

要将CSS文件读取为String,请使用此代码。它适用于.txt

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')

答案 2 :(得分:6)

您必须使用readFile模块中的filesystem功能。

http://nodejs.org/docs/v0.3.1/api/fs.html#fs.readFile

答案 3 :(得分:1)

选择的答案已已淘汰,并且不推荐了。 NodeJS文档suggests其他方法如下:

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

但它不再扩展。

  • 您可以使用一个非常简单的库,例如:require-text

  • 或者自己实现(例如,从上面的包中:)

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

答案 4 :(得分:0)

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