我的插件无法运行使用 Node.js Stream Deck SDK 和 RobotJS 创建的

问题描述 投票:0回答:1

我想制作一个更高级的键盘和鼠标模拟器来交替内置操作。
从插件模板开始。
无需任何更改即可构建它并且有效。
然后安装robotjs模块和rollup插件来打包robotjs.node文件。
将 robots.keyTap() 添加到主脚本的 onKeyDown 事件中。
之后,该插件将停止工作。

设置:

npm install -g @elgato/cli
streamdeck create

模块安装:

npm i robotjs
npm i --save-dev rollup-plugin-natives

rollup.config.mjs
(添加了一些行来打包robotjs.node文件,并且没有触及其他部分。)

// ...
import nativePlugin from 'rollup-plugin-natives'
// ...
const config = {
        // ...
    plugins: [
        nativePlugin
        (
            {
                copyTo: `./${sdPlugin}/lib`,
            }
        )
    ]
};

...\src 操作\increment-counter.ts
(我在运行“streamdeck create”时得到的模板脚本。)

import { action, KeyDownEvent, DialRotateEvent, SingletonAction, WillAppearEvent } from "@elgato/streamdeck";
import * as robot from 'robotjs'

@action({ UUID: "com.user.testplugin.increment" })
export class IncrementCounter extends SingletonAction<CounterSettings> {
    async onWillAppear(ev: WillAppearEvent<CounterSettings>): Promise<void>
    {
        let count = 0;
        await ev.action.setSettings({ count });
        return ev.action.setTitle(`${count}`);
    }
    async onKeyDown(ev: KeyDownEvent<CounterSettings>): Promise<void> {
        let count = ev.payload.settings.count ?? 0;
        count++;
        robot.keyTap('enter'); // <-- 💀🚩.

        await ev.action.setSettings({ count });
        await ev.action.setTitle(`count}`);
    }
}

type CounterSettings = {
    count: number;
};

调用 keyTap() 等机器人方法将不会运行插件。

即使在 try{} 中,脚本也无法到达 catch(error){...}。
所以,我无法调试插件,也无法收到错误消息。

如果插件运行,按钮上应该显示“0”,但什么也不显示。
按下时会显示警告标志⚠️。

出了什么问题?
我不熟悉 typescript 和 rollup。
请帮忙。

环境:

Windows 10 Home 64bit
Stream Deck 6.6.1
NodeJS v18.18.0
node.js robotjs streamdeck
1个回答
0
投票

可能为时已晚,但我遇到了类似的问题:

RollupError: node_modules/robotjs/build/Release/robotjs.node (1:2): Unexpected character '�' (Note that you need plugins to import files that are not JavaScript)

我能够通过编辑

rollup.config.mjs
并将 robotsjs 声明为外部依赖项来解决此问题。

像这样:

const config = {
  input: "...",
  output: { ... },
  plugins: [ ... ],
  external: ["robotjs"],
};

export default config;

我也是流媒体插件、节点和汇总的新手。但我希望如果有人再次偶然发现这个问题,这会有所帮助^^

© www.soinside.com 2019 - 2024. All rights reserved.