찾다

 >  Q&A  >  본문

import - node.js의 require npm 설치 모듈은 무엇을 합니까?

나는 방금 require 모듈이 후속 require에도 영향을 미친다는 것을 발견했습니다. 예를 들어 moment와 moment-timezone을 사용하면 다음과 같습니다.

/app.js

으아아아

하지만 moment-timezone을 먼저 요구한 다음 moment, npm install moment를 요구하는 경우에도 여전히 require('moment')를 사용할 수 있으며 이 순간은 다음과 같이 moment-timezone 기능을 사용할 수 있습니다

/app.js

으아아아

내가 이해하지 못하는 것은 왜 require('moment-timezone') 이후에 npm install moment가 없어도 오류 보고 없이 require('moment');를 할 수 있다는 것입니다.
이러한 노드 모듈의 설계는 무엇입니까, 아니면 그러한 동작을 유발할 수 있는 특별한 용어가 있습니까?

그런데, 위의 순간-시간대를 이렇게 설계할 수 있다면 오늘 npm에서 사용할 수 있도록 noname이라는 모듈을 출시했다고 가정해 보겠습니다. require('noname'); 후속 require('express') 모듈의 반환 내용은 다음과 유사한 효과를 갖습니다.

으아아아
世界只因有你世界只因有你2703일 전1104

모든 응답(1)나는 대답할 것이다

  • 某草草

    某草草2017-06-29 10:11:33

    1. 왜 require('moment-timezone')之后,即使我没有npm install moment我还是可以require('moment') 그런데 오류가 보고되지 않나요?

    보기 moment-timezone종속성

    으아악

    moment-timezone是依赖了moment的,这表示在安装moment-timezone时会自动安装moment moment에 따라 달라지는 것을 볼 수 있는데, 이는

    설치 시 moment가 자동으로 설치된다는 의미이므로 별도로 설치하지 않고도 사용이 가능합니다.

    require('moment-timezone')会影响后续var moment = require('moment')2.

    에 `순간`이라는 과제가 있는 이유는 무엇인가요? moment-timezone보기

    소스 코드

    으아악 moment-timezone修改了require('moment'),众所周知npm模块是会缓存的,所以后续var moment = require('moment')라인 14에서

    수정된 require('moment')를 볼 수 있습니다. 우리 모두 알고 있듯이 npm 모듈이 캐시되므로 후속 var 순간 = require(' 순간')이 영향을 받습니다

    moment-timezone그런데, 모듈을 직접 수정하는 것은 전역 변수를 수정하는 것과 같아서 좋은 습관이 아닙니다. 여기의

    모듈은 기본적으로 `moment` 모듈의 패치이며 특별한 경우입니다.

    회신하다
    0
  • 취소회신하다