Node.js запускает файл внутри другого файла - PullRequest
0 голосов
/ 27 января 2019

это мой текущий код

function includeClass(classname, ctx) {
   var txt = fs.readFileSync("socket.io/" + classname + ".js");
   return txt;
}

//define globals here
var _PLAYERS = {};
var _SPAWNPOINTS = [];

vm.runInThisContext(includeClass("vector"));
vm.runInThisContext(includeClass("class"));
vm.runInThisContext(includeClass("connectionHandler"));
vm.runInThisContext(includeClass("game"));

Но в этом случае файл class.js не может получить доступ к переменным из глобальной области видимости или других файлов.потому что теперь я получаю ошибки типа _PLAYERS или require не определено.Я тоже пробовал eval(), но он ничего не делал вообще.

Как я могу запустить эти js-скрипты в основном скрипте, чтобы они интерпретировались как 1 целое?

1 Ответ

0 голосов
/ 28 января 2019

https://nodejs.org/api/vm.html#vm_vm_runinthiscontext_code_options:

Выполненный код не имеет доступа к локальной области, но имеет доступ к текущему глобальному объекту.

Ваша переменная _PLAYERS имеет значениене действительно глобальный, он локальный для вашего сценария.Как и некоторые другие переменные (например, require), которые также находятся в области действия модуля .

Вы можете попытаться присвоить необходимые переменные объекту global, однако яне очень хорошо понимает, какие побочные эффекты и осложнения могут последовать.

...