2016-08-04 4 views
0

오류 : "TILE_SIZE가 정의되지 않았습니다". 월드 클래스의 생성자.요구 사항 파일에서 전역 변수가 정의되지 않았습니다.

내가 사용하려고 :

global.TILE_SIZE = 64; 

작동하지만, VAR로를 선언 할 때,하자 또는이 정의되지에서 const. 왜 이런 일이 생길까요?

app.js :

const TILE_SIZE = 64; 
let WORLDS = []; 

... 

let World = require("./World"); 

... 

function init() { 
    WORLDS[0] = new World(0, [...]); 
} 

... 

init(); 

World.js :

class World { 
    constructor(id, boundmap) { 
     this.id = id; 
     this.boundmap = boundmap; 
     this.width = boundmap[0].length * TILE_SIZE; 
     this.height = boundmap.length * TILE_SIZE; 
    } 

    ... 
} 

module.exports = World; 

답변

0
노드 모듈합니다 ( require 기능은 내가 생각하는) 함수에서 실행되기 때문이다

그래서 const, letvar 변수의 범위는 해당 기능이지만 범위는 global.TILE_SIZE = 64;입니다.

0

대답은 require() 함수 구현에 있다고 생각합니다. TILE_SIZEvar, let 또는 const으로 정의하면 범위는 app.js이며 global 개체는 아닙니다. 따라서 World.js 안에는 app.js의 범위에 액세스 할 수 없습니다.

0

귀하의 app.jsWorld.js은 다른 문맥 폐쇄의 일부입니다. TILE_SIZE 변수는 app.js 내부에서만 액세스 할 수 있습니다.

World의 생성자에 변수로 TILE_SIZE 변수를 명시 적으로 전달해야합니다.

Learn More about Closures here

관련 문제