首页 > 解决方案 > 使用 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

标签: babeljsspectron

解决方案


推荐阅读