小编Jin*_*ska的帖子

将Electron集成到Angular项目时,fs模块失败

我在整合Electron时遇到了一些麻烦.当我按照博客文章中的描述使用它时,一切正常.当我想使用import Electron(electron.remote)在Angular2服务中使用它来让应用程序使用桌面功能(如系统对话框和文件系统访问)时出现问题.

加载应用程序时,我收到以下错误,包含在webpack包中的electron/index.js中:

Uncaught TypeError: fs.existsSync is not a function (index.js:6)
Run Code Online (Sandbox Code Playgroud)

该文件看起来很简单:

var fs = require('fs')
var path = require('path')

var pathFile = path.join(__dirname, 'path.txt')

if (fs.existsSync(pathFile)) {
module.exports = path.join(__dirname, fs.readFileSync(pathFile, 'utf-8'))
} else {
throw new Error('Electron failed to install correctly, please delete node_modules/' + path.basename(__dirname) + ' and try installing again')
}

//////////////////
// WEBPACK FOOTER
// ./~/electron/index.js
// module id = 609
// module chunks = 2
Run Code Online (Sandbox Code Playgroud)

这里有趣的是,另一个内置模块路径在同一段代码中没有问题.当我查看电子应用程序的开发工具时,我可以看到预期的path方法以及两个静态属性(分隔符).但是,当我看到 …

electron angular-cli webpack-2 angular

5
推荐指数
1
解决办法
1443
查看次数

是否可以在 VS Code 设置中的 VS Code 工作区中设置特定的环境变量?

我有一个用于某些开发的项目文件夹(Pi Pico,但这不是必需的)。通常,要启动 VS Code 并能够构建项目,我必须启动开发人员命令提示符,然后从此命令提示符启动 Code。这样做的主要目的是,它引入了许多环境变量,使得可以从 Visual Studio 构建工具运行必要的工具(大约 40 多个变量)。

我试图找出是否可以为 VS Code 工作区设置某些通用环境状态,但没有找到任何内容。可以为某些操作设置环境,例如启动调试器,但不能启动终端任务。

这确实很有帮助,因为 VS Code 实例和从它启动的任何任务(以及终端窗口中的 shell)都必须共享完全相同的环境。因此,有必要在工作区级别进行此配置,而不是仅限于特定任务。

visual-studio-code

5
推荐指数
0
解决办法
589
查看次数

当 Reader“挂起”时如何中断它(Reader.read() 需要超时)

这个问题与使用 Chrome Serial API 时发生的情况有关,但可能与任何 ReadableStream 相关。我研究了文档,可能错过了一些功能或模式。

一个简单的程序在 Chrome 浏览器中运行,访问 CW 键控器(基于 Arduino,但这并不重要)。

应用程序向键控器发送命令,并期望两个二进制字节或字符串作为响应(特定格式取决于发送的命令,并不重要)。

如果串行设备(不是 USB/串行适配器,而是 Arduino)由于某种原因错过了该命令,则永远不会发送响应,并且expectResponse()下面的函数将永远不会返回任何数据,也不会抛出任何异常。结果,Reader 保持锁定状态,ReadableStream 因此无法关闭,因此串行端口也无法关闭。

此外,根据应用程序结构,如果其他命令成功发送到键控器,则可能无法读取第二个响应,因为第一个读取器会阻塞流,并且在它被释放之前,无法创建新的读取器。


async function expectResponse( serialPort ) {
   const reader = serialPort.readable.getReader() ;
   let { value, done } = await reader.read() ; // this never returns because no data arrive, not possible to "break"
}

async function disconnect( serialPort ) {
   // ... some cleanup ...
   // naive attempt to unlock ReadableStream before closing 
   await serialPort.readable.getReader().releaseLock() // this will throw …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome serial-port webapi

4
推荐指数
1
解决办法
1252
查看次数

如何读取COM端口?navigator.serial.getPorts 返回空列表

我连接了少量 USB 串行接口(一个 HF 收发器、基于 Arduino 的 CW 键控器)和两个蓝牙端口,我从未使用过它们,并且不确定它们来自哪里(可能是某些应用程序)。在我的 SPA 中,我需要阅读端口列表,以便能够选择连接哪个端口作为哪个功能。

然而,当我打电话时,navigator.serial.getPorts()我总是得到一个空列表。navigator.usb.getDevices()顺便说一句,它在 Chrome 版本 87.0.4280.141(官方版本)(64 位)上运行也是如此。串行 API 已启用。

怎么解决这个问题呢?

更新:它是从本地文件系统中的 HTML 文件中的脚本调用的(不通过 HTTP 提供服务)

google-chrome

3
推荐指数
1
解决办法
4387
查看次数