要求文件为字符串

Tho*_*ggi 87 string require node.js express

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

var string = require("words.txt");
Run Code Online (Sandbox Code Playgroud)

我反对

modules.exports = function(){

    var string = "whatever";

    return string;

}
Run Code Online (Sandbox Code Playgroud)

Jon*_*ski 114

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

否则,你可以混合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);
});
Run Code Online (Sandbox Code Playgroud)

  • 现在,对于遇到此帖子的任何人,都不推荐使用require.extensions.http://nodejs.org/api/globals.html#globals_require_extensions (46认同)
  • 虽然它确实已被弃用,但还有什么好的选择吗?(延伸要求,我的意思是) (8认同)
  • "过去已弃用"但是"由于模块系统被锁定,此功能可能永远不会消失.但是,它可能会有微妙的错误和复杂性,最好不要触及 (2认同)

Max*_* Ma 19

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

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

const css = fs.readFileSync(path.resolve(__dirname, 'email.css'), 'utf8')
Run Code Online (Sandbox Code Playgroud)

ES6:

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

let css = fs.readFileSync(path.resolve(__dirname, 'email.css'), 'utf8')
Run Code Online (Sandbox Code Playgroud)

  • 如何为 html 文件完成此操作?我在同级目录中有一个 html 文件,我需要读取该文件并将其作为字符串加载到 Cheerio 中? (4认同)

Sim*_*ias 6

你将不得不使用模块中的readFile功能filesystem.

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


mim*_*mim 5

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

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

但它不再扩展。

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

  • 或者自己实现它(就像上面的包一样:)

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


小智 5

我最简单的解决方案是

var string = require("fs").readFileSync("file.txt", 'utf8')
console.log("string = ", string);
Run Code Online (Sandbox Code Playgroud)