을 무시합니다. 친구가 흥미로운 질문을 던지고 몇 가지 시도했지만 아무 소용이 없어도 노드 JS 모듈을 무시할 수있는 방법이 있습니까?노드 JS는 표준 모듈
예를 들어 파일 시스템 대신 S3 버킷을 사용하도록 readFile 함수를 재정의하려고합니다. IE는 :
var fs = require('fs');
fs.readFile('my_text_file.txt', ...);
이 사실 나는 프로토 타입을 해봤이
FileSystem.readFile = function() {
// Connect to S3 and retrieve remote file
}
같은 것을 실행하지만 그들이 __proto__
목적없이 네이티브 모듈을 설정 한 것 같다, 그들은 .constructor
속성이 없습니다 그건 누구에게나 의미가 있습니다.
나는 Nodes VM을 사용하는 것에 대해 생각해 보았습니다.하지만 사용자가 npm
을 통해 모듈을 설치하고 사용하기를 원하기 때문에 너무 엄격합니다.
실제로 새 모듈 생성되어 왔어요 가장 가까운 곳 (내 node_modules
폴더에 fs.js
라는 이름의 파일을 넣어 그것을 필요로 할 수 없기 때문에, 그냥 무시됩니다) 단지에 fs
의 값을 하드 설정을 내가 원하는 것은 아니지만 이것은 옳지 않다. 나는 사용자가 require('fs')
을 사용하고 내 사용자 정의 함수를 사용하기를 원한다.
내 노드 JS를 직접 컴파일하지 않고도이 작업을 수행 할 수 있습니까?
node.js로 작업하지 않았으므로 전혀 작동하지 않을 수 있습니다. 어떤 함수가'FileSystem'을 선언하고 사용자 정의 객체 ("하위 클래스")의 프로토 타입으로 사용하는지 확인할 수 있습니다. MyFS = {FileSystem.call (this);}; MyFs.prototype = new FileSystem(); 또는 goog.base 및 goog.inherit과 같은 것을 사용하여 부모 함수를 호출하고 생성자에 전달 된 매개 변수 (http://docs.closure-library.googlecode.com/git/closure_goog_base)를 처리 할 수있는 하위 클래스를 만듭니다. js.html badse는'arguments.callee.caller'를 사용합니다. 왜냐하면 ecma 5에서는 작동하지 않기 때문에 당신은 다시 작성해야합니다. – HMR
goog.base와 goog.inherits에 대한 좋은 글은 여기에 있습니다 : http://bolinfest.com/essays/googbase.html – HMR
설명을 위해'FileSystem'을 만들었고, 모듈에는'__proto__' 객체가없고 따라서 생성자가 없습니다. 가장 가까운 것은 객체에 직접 속성을 설정하고 다른 스크립트를 포함하는 것입니다. 그러나'require ('fs')하고 싶습니다. 그리고 내 사용자 정의 기능이 있습니다. –