나는 방금 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') 모듈의 반환 내용은 다음과 유사한 효과를 갖습니다.
으아아아
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
그런데, 모듈을 직접 수정하는 것은 전역 변수를 수정하는 것과 같아서 좋은 습관이 아닙니다. 여기의