javascript - 如何在 react js(reactjs + electron)组件中使用 native node_modules?

标签 javascript reactjs electron

我正在尝试在 reactjs 应用程序中使用 native node_module,即“@pokusew/pcsclite”,但它不起作用。有人可以帮忙吗?
以下是错误:

Uncaught TypeError: exists is not a function
   at Function.getRoot (bindings.js:202)
   at bindings (bindings.js:82)
   at Object.<anonymous> (pcsclite.js:4)
   at Object../node_modules/pcsclite/lib/pcsclite.js (pcsclite.js:160)
   at __webpack_require__ (bootstrap:784)
   at fn (bootstrap:150)
   at Object../node_modules/pcsclite/index.js (index.js:1)
   at __webpack_require__ (bootstrap:784)
   at fn (bootstrap:150)
   at Module.<anonymous> (App.css?4433:45)
   at Module../src/App.js (App.js:85)
   at __webpack_require__ (bootstrap:784)
下面是我在 reactjs 组件中使用的代码,我在其中以不同的方式导入 pcsclite 模块,一种是使用 import,另一种是使用 require 函数
import pcsclite from '../node_modules/@pokusew/pcsclite'
var pcsc = pcsclite();
pcsc.on('reader', function(reader) {
    console.log('New reader detected', reader.name);
    reader.on('error', function(err) {
        console.log('Error(', reader.name, '):', err.message);
    });

    reader.on('status', function(status) {
        console.log('Status(', reader.name, '):', status);
        /* check what has changed */
        var changes = reader.state ^ status.state;
        console.log('changes(', changes, '):', status);
        if (changes) {
            if ((changes & reader.SCARD_STATE_EMPTY) && (status.state & reader.SCARD_STATE_EMPTY)) {
                console.log("card removed");/* card removed */
                reader.disconnect(reader.SCARD_LEAVE_CARD, function(err) {
                    if (err) {
                        console.log(err);
                    } else {
                        console.log('Disconnected');
                    }
                });
            } else if ((changes & reader.SCARD_STATE_PRESENT) && (status.state & reader.SCARD_STATE_PRESENT)) {
                console.log("card inserted");/* card inserted */
                reader.connect({ share_mode : reader.SCARD_SHARE_SHARED }, function(err, protocol) {
                    if (err) {
                        console.log(err);
                    } else {
                        console.log('Protocol(', reader.name, '):', protocol);
                        reader.transmit(new Buffer([0x00, 0xB0, 0x00, 0x00, 0x20]), 40, protocol, function(err, data) {
                            if (err) {
                                console.log(err);
                            } else {
                                console.log('Data received', data);
                               // reader.close();
                               // pcsc.close();
                            }
                        });
                    }
                });
            }
        }
    });

最佳答案

我为上述问题找到了解决方案。我已经通过窗口对象在 reactjs 中导入了我的 native node_module 。下面是解决方案。

const electron = window.require('electron');
const pcsclite = electron.remote.require('@pokusew/pcsclite');

关于javascript - 如何在 react js(reactjs + electron)组件中使用 native node_modules?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63867193/

相关文章:

javascript - Electron JS : How to show changes in the code immediately?

node.js - 每当我发送消息时,它都会在 react 中多次显示相同的消息

reactjs - 使用 useRef Hook "element.current"在 useEffect Hook 中为 null

javascript - 如何连接 2 个切片数组?

javascript - 如何在 JavaScript 设置代码中添加 CSS 类?

reactjs - 如何改变antd中复选框的颜色?

javascript - 从 Electron 应用程序打印

javascript - 如何卡住/停止 JavaScript 执行直到函数完成

javascript - Google Wave 和 iGoogle 如何通过小部件防止 XSS?

javascript - GLTF 加载程序试用版返回类型错误 : Failed to resolve module specifier "three". 相对引用必须以 "/"、 "./"或 "../"开头