125

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

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

我反对

modules.exports = function(){

    var string = "whatever";

    return string;

}
4

6 回答 6

149

如果是针对(少数)特定扩展,您可以添加自己的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);
});
于 2012-10-05T19:43:56.590 回答
51

要将 CSS 文件读取为字符串,请使用此代码。它适用于.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')
于 2018-04-15T04:54:05.190 回答
8

所选答案已弃用不再推荐。NodeJS 文档建议使用其他方法,例如:

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

但它不再扩大。

  • 你可以像这样使用一个非常简单的库:require-text

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

    var fs = require('fs');
    module.exports = function(name, require) {
       return fs.readFileSync(require.resolve(name)).toString();
    };
    
于 2020-08-14T18:39:13.283 回答
7

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

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

于 2012-10-05T19:16:49.097 回答
0

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

于 2018-06-28T04:47:12.677 回答
0

我最简单的解决方案是

var string = require("fs").readFileSync("file.txt", 'utf8')
console.log("string = ", string);
于 2022-01-03T10:25:42.963 回答