我正在使用node + express,我只是想知道如何将任何文件作为字符串导入。假设我有一个txt文件,我只想将它加载到变量中。
var string = require("words.txt");
我反对
modules.exports = function(){
var string = "whatever";
return string;
}
答案 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.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);
});
答案 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
功能。
答案 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