All Articles

[nodemon] app crashed - waiting for file changes before starting...


esm 라이브러리의 도움을 받아 import/export 문법을 사용해야 했지만, Node.js v12부터 ES Module이 정식 지원됩니다.

사용법으로는

package.json

 (...)
 "scripts": {
   "start": "node src",
   "start:dev": "nodemon --watch src/ src/index.js"
 },
 "type": "module"
}

"type": "module"을 추가하면 ES Module을 바로 사용할 수 있다고 했지만,

$ yarn start:dev 명령어로 서버를 재시작하니,

[nodemon] app crashed - waiting for file changes before starting…

에러를 만나게 됩니다.


Solution

Node.js v12 or later


 (...)
 "scripts": {
   "start": "node src",
   "start:dev": "nodemon --watch --experimental-modules src/ src/index.js"
 },
 "type": "module"
}

--experimental-modules 를 추가해주면 에러가 해결됩니다! 짠!


+ 추가로 계속 에러가 나신다면…

esm 라이브러리 사용
    1. $ yarn add esm

    1. 기존의 src/index.js 파일의 이름을 main.js로 변경

    1. 새로 src/index.js을 생성 후,
    /* eslint-disable no-global-assign */
    
    require = require('esm')(module /*, options*/);
    module.exports = require('./main.js');

    1. package.json 내용 수정
    "scripts": {
    "start": "node -r esm src",
    "start:dev": "nodemon --watch src/ -r esm src/index.js"
    }

    1. .eslintrc.json

    eslint를 설정하셨다면 추가해주시고, 아니면 skip 하면됩니다.

    {
    (...)
    "parserOptions": {
      "ecmaVersion": 2018,
      "sourceType": "module"
    }
    }

기존에 실행 중이던 서버는 종료하고, 다시 서버를 시작하면,

이제 프로젝트에서 import/export 구문을 자유롭게 사용할 수 있을 것입니다.