babeljs - 使用 Spectron 时,如何在电子应用程序的 main.js 之前应用 babel 配置?
问题描述
我正在使用 jest 运行一个使用 Spectron 启动 Electron 应用程序的测试脚本。加载我的 babel 配置的正确方法是什么?通常我这样启动应用程序:npx electron -r @babel/register .
(npm start in package.json)
我使用 Spectron 的测试脚本尝试像这样初始化它:
import { Application } from 'spectron';
const app = new Application({
path: 'node_modules/electron/dist/electron',
args: ["-r @babel/register", "src/main.js"],
chromeDriverArgs: ['--disable-dev-shm-usage', '--headless'],
chromeDriverLogPath: 'chromeDriver.log'
})
但是main.js
在第一个 import 语句中出现 SyntaxError 崩溃。显然-r @babel/register
没有加载。
如果我在终端上手动path
构造一个命令:args
node_modules/electron/dist/electron -r @babel/register src/main.js
该应用程序启动得很好。但是查看 chromeDriver 日志,我看到这个命令可能与实际调用的不同。从日志:
"chromeOptions": {
"args": [ "spectron-path=node_modules/electron/dist/electron", "spectron-arg0=-r @babel/register", "spectron-arg1=src/main.js", "--disable-dev-shm-usage", "--headless" ]
我现在的 hacky 解决方法是specmain.js
使用以下内容制作脚本:
"use strict";
require("@babel/register");
require("./main")
然后我的测试脚本成功启动了应用程序,现在使用:
const app = new Application({
path: 'node_modules/electron/dist/electron',
args: ["src/specmain.js"],
chromeDriverArgs: ['--disable-dev-shm-usage', '--headless'],
chromeDriverLogPath: 'chromeDriver.log'
})
在 Spectron 的背景下,@babel/register
提前要求的好方法是什么?main.js
解决方案
推荐阅读
- r - How to filter a dataframe using a list of multiple ranges of a variable
- reactjs - 将 rowStyleClass 应用于 PrimeReact DataTable 中的每一行
- node.js - 未在 node.js 中返回 windows 环境变量
- python - How to convert my json data to dataframe pandas
- google-cloud-platform - How to limit Google Cloud VM Access to wifi domain
- angular - 选择器仅适用于相同模块的组件
- python - Numpy power ufunc 在特定轴上运行
- google-apps-script - Use script to change style for multiple words
- python - 通过在 __init__.py 中导入子包跳过导入路径中的目录名称
- dart - Sending boolean value on flutter platform method channel not working correctl on iOs