문자열로 파일 필요


99

node + express를 사용하고 있으며 파일을 문자열로 가져올 수있는 방법이 궁금합니다. 내가 원하는 것은 변수에로드하는 것뿐입니다.

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

나는 반대한다

modules.exports = function(){

    var string = "whatever";

    return string;

}

1
이 답변은 아니지만,이 피합니다 함수 만들기 : 포함const { string } = require('words.js');words.jsmodule.exports = { string: 'whatever' };
민주 Pilafian

답변:


127

(몇 가지) 특정 확장에 대한 경우 고유 한 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);
});

51
require.extensions는 이제이 게시물을 보는 모든 사람에게 더 이상 사용되지 않습니다. nodejs.org/api/globals.html#globals_require_extensions
blockloop

2
Deprecated in the past하지만Since the module system is locked, this feature will probably never go away. However, it may have subtle bugs and complexities that are best left untouched.
loretoparisi

10
실제로 더 이상 사용되지 않지만 좋은 대안이 있습니까? (즉, I 평균 필요로 확장)
juandemarco

31

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
html 파일에 대해 어떻게 할 수 있습니까? cheerio에 문자열로 읽고로드해야하는 형제 디렉터리에 html 파일이 있습니까?
lopezdp


0

node.js 및 TypeScript와 함께 .json 파일이 필요할 수 있습니다. 이것이 텍스트 직렬화에 적합한 required ()를 지원하는 유일한 형식입니다. https://github.com/cancerberoSgx/fs-to-json 과 같은 컴파일 타임 도구를 사용하여 파일을 json으로 압축 할 수 있습니다.


0

선택한 대답은 되지권장하지 않습니다 더 이상. NodeJS 문서 는 다음 과 같은 다른 접근 방식을 제안합니다 .

다른 Node.js 프로그램을 통해 모듈로드

그러나 더 이상 확장되지 않습니다.

  • 다음과 같은 매우 간단한 라이브러리를 사용할 수 있습니다. require-text

  • 또는 직접 구현하십시오 (위 패키지에서와 같이 :)

    var fs = require('fs');
    module.exports = function(name, require) {
       return fs.readFileSync(require.resolve(name)).toString();
    };
    
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.