상세 컨텐츠

본문 제목

node.js) require, module.exports -> import, export default로 수정하기

본문

728x90

문제 1. es6 문법이 적용되지 않음

오류 메시지 상태 : Cannot use import statement outside a module

// const {odd, even} = require('./var');
import {odd, even} from './var';


// module.exports = checkOddOrEven;
export default checkOddOrEven;

const, require -> import, from

module.export -> export defualt로 변경이 안 됨

 

해결

node 환경이 아니라는 것을 깨닫고, npm init 해서 node 환경 실행.

npm init

npm install express --save

 

그리고 package.json에 "type": "module" 추가

 

*이유*

package.json의 “type” 필드에 별도의 값이 없거나 “commonjs”로 설정되어 있으면 기본 모듈 처리 방식이 require를 사용하는 commonjs 방식으로 설정되기 때문에 import 부분에서 에러가 발생했던 것이고 “type” 필드 값을 “module”로 설정한 후엔 모듈 처리 방식이 import를 사용하는 es6 방식으로 변경

출처 : https://takeknowledge.netlify.app/bugfix/cannot-use-import-statement-outside-a-module/

 

 

문제 2.

오류 메시지 1) node:internal/process/esm_loader:94
    internalBinding('errors').triggerUncaughtException(
                              ^

오류 메시지 2) code: 'ERR_MODULE_NOT_FOUND' 

 

해결

import 하는 파일들 확장자 이름을 붙임

*이유* 

한 가지 주의하실 점은 Babel 없이 순수하게 Node.js 최신 버전으로 ES 모듈을 사용하고 계시다면, import를 사용할 때 .js 확장자를 붙여주서야 합니다.

출처 : https://www.daleseo.com/js-module-import/

 

문제 3. 

오류 메시지 : SyntaxError: The requested module './var.js' does not provide an export named 'even'

 

원인

const odd = "홀수"
const even = "짝수"

// module.exports = {
//     odd, 
//     even, 
// }

export default {
    odd, 
    even, 
}

module.exports를 export defualt와 대응한다고 생각해서 적었던게 문제였음. 

 

*개념* 
export: 한 파일(.js) 안에서 여러개를 내보낼 수 있음 
export default: 한 파일(.js)안에서 한개만 내보낼 수 있음

해결

- 여러개 export 해주는게 있는 부분을, export default에서 export로 수정 

728x90
반응형

관련글 더보기