문자열로 파일 필요


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.