我try 使用xTerm JS和node-pty在NW.js中运行终端仿真器/命令提示符.我只收到一个DLL错误.下面是日志(log):

Uncaught Error: Eine DLL-Initialisierungsroutine ist fehlgeschlagen. 

\\?\C:\Users\volke.a\Z_local\nwjstart\node_modules\node-pty\build\Release\conpty.node     
at Module._extensions..node (node:internal/modules/cjs/loader:1365:18)     at Module.load (node:internal/modules/cjs/loader:1116:32)     
at Module._load (node:internal/modules/cjs/loader:963:12)     
at Module.require (node:internal/modules/cjs/loader:1140:19)     
at require (node:internal/modules/helpers:117:18)     
at new WindowsPtyAgent (C:\Users\volke.a\Z_local\nwjstart\node_modules\node-pty\lib\windowsPtyAgent.js:41:36)     
at new WindowsTerminal (C:\Users\volke.a\Z_local\nwjstart\node_modules\node-pty\lib\windowsTerminal.js:51:24)     
at Object.spawn (C:\Users\volke.a\Z_local\nwjstart\node_modules\node-pty\lib\index.js:29:12)     
at chrome-extension://fnhkclelbagcndnlaobahcdeinlcloek/terminal.js:15:24

"A DLL初始化 routine 失败"表示"A DLL初始化 routine 失败".

我的操作系统是Windows 10

这是一段JavaScript代码

const os = require('os');
const pty = require('node-pty');
const { Terminal } = require('xterm');

win = nw.Window.get()
win.x = 100
win.y = 100

// Create a new terminal instance
const terminalContainer = document.getElementById('terminal');
const term = new Terminal();
term.open(terminalContainer);
// Start a PowerShell terminal session using node-pty
const shell = os.platform() === 'win32' ? 'powershell.exe' : 'bash';
const ptyProcess = pty.spawn(shell, [], {
  name: 'xterm-color',
  cols: 80,
  rows: 30,
  cwd: process.cwd(),
  env: process.env
});

// Pipe terminal output to xterm.js
ptyProcess.onData(data => term.write(data));
term.onData(data => ptyProcess.write(data));


// Handle command line input
term.onKey(e => {
  const printable = !e.domEvent.altKey && !e.domEvent.ctrlKey && !e.domEvent.metaKey;

  if (e.domEvent.keyCode === 13) {
    ptyProcess.write('\r\n');
  } else if (printable) {
    ptyProcess.write(e.key);
  }
});

我已经try 更新了npm、node、node-pty、xTerm和NW.js.

推荐答案

您的依赖项需要针对您正在使用的NW.js构建中包含的Node.js版本进行构建/编译.

参见NODE-Pty自述文件讨论这一点:https://github.com/microsoft/node-pty#dependencies

和NW.js文档:https://nwjs.readthedocs.io/en/latest/For%20Users/Advanced/Use%20Native%20Node%20Modules/

一种简单的匹配版本的方法:https://nwjs.io/versions.json

Javascript相关问答推荐

在卡信息之间切换

序列查找器功能应用默认值而不是读取响应

可以的.是否可以在不预编译的情况下使用嵌套 Select 器?

将自定义排序应用于角形数字数组

将现场录音发送到后端

获取Uint8ClampedArray中像素数组的宽度/高度

如何在JavaScript文件中使用Json文件

Prisma具有至少一个值的多对多关系

如何通过将实例方法的名称传递给具有正确类型的参数的继承方法来调用实例方法?

我怎么在JS里连续加2个骰子的和呢?

使用NextJS+MongoDB+Prisma ORM获取无效请求正文,无法发布错误

在FAQ Accodion应用程序中使用React useState时出现问题

传递方法VS泛型对象VS事件特定对象

如何用javascript更改元素的宽度和高度?

为什么延迟在我的laravel项目中不起作用?

通过跳过某些元素的对象进行映射

用Reaction-RT-Chart创建实时条形图

Promise.race()返回已解析的promise ,而不是第一个被拒绝的promise

TabNavigator和StackNavigator之间的Reaction Native中的导航问题

JavaScript -如何跳过某个字符(S)来打乱字符串中的字符