Существует ли замена ffi-napi для NodeJS ver.20?

Ссылка скопирована
1 ответ

Один из наших продуктов (сервер на базе NodeJS) активно использует модули ffi-napi и ref-napi.
Всё было отлично пока мы использовали NodeJS ver.16.20.2 Но пришло время обновиться до 20 (LTS),
18 (LTS) мы с своё время пропустили. И вот выясняется, что 16 (LTS) была последней версией на которой ffi-napi нормально работал! С тех пор есть несколько похожих issues (например), как под Windows, так и под Linux, все как один с одинаковой ошибкой

Cannot read properties of null (reading 'match')

Ни шатко ни валко даже merge request существует, где несколько багов починено и, кажется, этот тоже. Но он уже полгода без движения...
Короче, вопрос: Существует ли замена ffi-napi и ref-napi для NodeJS ver.20?

Дополнительно:

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Игорь Волков Ответ

Да, существует замена ffi-napi для Node.js версии 20. Одним из альтернативных модулей, который можно использовать вместо ffi-napi, является ref-napi. Ref-napi также позволяет взаимодействовать с библиотеками на языке Си из Node.js, но имеет некоторые отличия от ffi-napi.

Прежде всего, для использования ref-napi вам необходимо установить его через npm:

npm install ref-napi

npm install ref-napi

Затем вы можете подключить модуль в своем коде Node.js и начать использовать его для работы с библиотеками на языке Си. Вот пример простой программы, которая использует ref-napi для вызова функции из библиотеки на языке Си:

const ref = require('ref-napi');
 
// Загружаем библиотеку на языке Си
const myLibrary = ref.dlopen('myLibrary.so');
 
// Определяем типы аргументов и возвращаемого значения функции
const intPtr = ref.refType(ref.types.int);
const myFunction = ref.derefType(intPtr);
 
// Получаем указатель на функцию
const myFunctionPointer = ref.get(myLibrary, 'myFunction');
 
// Вызываем функцию и получаем результат
const result = myFunctionPointer();
 
console.log('Результат вызова функции:', result);

const ref = require('ref-napi'); // Загружаем библиотеку на языке Си const myLibrary = ref.dlopen('myLibrary.so'); // Определяем типы аргументов и возвращаемого значения функции const intPtr = ref.refType(ref.types.int); const myFunction = ref.derefType(intPtr); // Получаем указатель на функцию const myFunctionPointer = ref.get(myLibrary, 'myFunction'); // Вызываем функцию и получаем результат const result = myFunctionPointer(); console.log('Результат вызова функции:', result);

Таким образом, вы можете использовать ref-napi для взаимодействия с библиотеками на языке Си в Node.js версии 20 и более поздних версиях. Не забудьте ознакомиться с документацией по ref-napi для более подробной информации о его возможностях и использовании.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно