Существует ли замена ffi-napi для NodeJS ver.20?
Один из наших продуктов (сервер на базе 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?
Дополнительно:
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Да, существует замена ffi-napi для Node.js версии 20. Одним из альтернативных модулей, который можно использовать вместо ffi-napi, является ref-napi. Ref-napi также позволяет взаимодействовать с библиотеками на языке Си из Node.js, но имеет некоторые отличия от ffi-napi.
Прежде всего, для использования ref-napi вам необходимо установить его через npm:
npm install ref-napinpm 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);
Таким образом, вы можете использовать ref-napi для взаимодействия с библиотеками на языке Си в Node.js версии 20 и более поздних версиях. Не забудьте ознакомиться с документацией по ref-napi для более подробной информации о его возможностях и использовании.