ECMAScript 모듈에서 require()를 사용하는 방법

ECMAScript 모듈은 이제 NodeJS 생태계에서 모듈을 가져오고 내보내는 새로운 방법이 되고 있습니다. 이렇게 하면 import를 사용하는 대신 require 문을 사용하여 모듈을 가져오고 내보낼 수 있습니다.

예 01

//multiple.js
const multiple = (num1, num2) => {
  return num1 * num2;
};


이것은 다음과 같이 가져올 수 있습니다.

import { multiple } from "./multiple.js";

console.log(multiple(10, 50));


예 02(기본 내보내기)

또한 ECMAScript 모듈은 다음과 같이 사용할 수 있는 기본 내보내기를 도입합니다.

//multiple.js
const multiple = (num1, num2) => {
    return num1 * num2;
};

export default multiple;


다음과 같이 가져올 수 있습니다.

import multiple from "./multiple.js";

console.log(multiple(10, 50));


기본적으로 NodeJS 앱에서는 ECMAScript 모듈을 사용할 수 없습니다. 이렇게 하려면 두 가지 방법이 있습니다.
  • 파일 확장자를 *.js에서 *.ejs로 변경해야 합니다.
  • "type": "module" 파일에 package.json를 추가할 수 있습니다.

  • {
      "name": "ECMAScript-modules",
      "version": "1.0.0",
      "description": "",
      "type": "module", 
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC"
    }
    


    NodeJS의 대부분의 모듈은 이제 ECMAScript 모듈 가져오기를 지원합니다. 그러나 여전히 사용하고 싶은 경우가 있을 수 있습니다require.

    🔴ECMAScript 모듈에서 require를 사용하는 경우. 오류가 발생합니다.

    import crypto from 'crypto'
    const fs = require('fs')
    


    위의 코드는 다음 오류를 발생시킵니다.

    require is not defined in ES module scope, you can use import instead.
    


    솔루션 🎉



    createRequire을 사용하여 이 문제를 해결할 수 있습니다. 다음은 사용 방법에 대한 샘플 코드입니다.

    import { createRequire } from "module";
    const require = createRequire(import.meta.url);
    
    import crypto from 'crypto'
    const fs = require('fs')
    


    별도의 파일에서 이를 정의하고 나중에 재사용할 수도 있습니다.

    import { createRequire } from "module";
    const require = createRequire(import.meta.url);
    
    export default require;
    


    그런 다음 이것은 다음과 같이 사용할 수 있습니다.

    import require from "./cjs-require.";
    const crypto = require("crypto");
    


    즐겁게 읽으셨기를 바랍니다.

    문제가 발생하면 의견을 말하십시오. 기꺼이 도와드리겠습니다. 또한 나와 연결

    좋은 웹페이지 즐겨찾기