Nan :: NewInstance возвращает пустой объект. Какой хороший способ отладить эту проблему - PullRequest
0 голосов
/ 30 сентября 2019

Я помогаю с PR для узла-дерева-ситтера . Я впервые играю с привязками nodejs C ++.

Я сталкиваюсь с ситуацией, когда вызов Nan::NanInstance() всегда возвращает пустой объект, даже если вызывается функция конструктора.

Вот что у меня есть https://github.com/bdurrani/node-tree-sitter/blob/08c1c3e4a36ed2a44b615292bf7c9894f8b2838c/src/tree.cc#L64

Tree :: NewInstance () получает указатель дерева. Вызов Nan :: NewInstance () работает. Я могу подтвердить, что Tree :: New () вызван и аргументы к нему были переданы правильно, сравнивая значения указателя.

Но по какой-то причине возвращаемое значение из Nan::NewInstance() возвращает пустой объект.

В качестве теста я посмотрел примеры узла-аддона и изменил образец, чтобы он следовал шаблону в Tree-Sitter https://github.com/bdurrani/node-addon-examples/blob/f423f0390bd547230f56207bab3db279ea707289/6_object_wrap/nan/one.cc#L16

One::NewInstance() получает указатель на некоторый класс C ++Вызывается его конструктор, и на этот раз возвращаемое значение из Nan::NewInstance() возвращает не пустой объект. Код практически идентичен.

Раньше я мало играл с привязками узлов. Любая идея, как бы я отлаживал с помощью NewInstance(), возвращает пустой объект. Я не вижу никаких ошибок или чего-либо происходящего.

Вы можете увидеть мои изменения в ветке здесь: https://github.com/bdurrani/node-tree-sitter/tree/node-12-test/src

У кого-нибудь есть предложения? Я просто пытаюсь понять, как отладить проблему, подобную этой. Кажется, что-то происходит со времени, когда Tree::New() возвращается, и я каким-то образом получаю пустой объект.

...