Файл машинописи, скомпилированный vue -cli, не может быть выполнен в электронном или браузерном формате. - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь запустить приложение Vue. js в электронном формате, созданное с помощью vue -cli, vue -cli-plugin-электронный-строитель и Typescript.

Само приложение должно открывать внешние страницы, такие как google.com, и запускать пользовательский код JavaScript на этой странице. Но vue -cli компилирует Typescript "неправильно", поэтому предварительно загруженные / пользовательские сценарии не выполняются на страницах

Настройка:

Пользовательский файл JavaScript добавляется в vue .config. js, поэтому он компилируется. Кроме того, я настроил веб-пакет devServer для хранения файлов, чтобы электрон мог его загрузить.

 // vue.config.js
module.exports = {
  lintOnSave: false,
  filenameHashing: false,
  outputDir: `${__dirname}/dist_electron`,
  pages: {
    index: {
      // entry for the page
      entry: 'src/main.ts',
      // the source template
      template: 'public/index.html',
      // output as dist/index.html
      filename: 'index.html',
      // when using title option,
      // template title tag needs to be <title><%= htmlWebpackPlugin.options.title %></title>
      title: 'Index Page',
      // chunks to include on this page, by default includes
      // extracted common chunks and vendor chunks.
      chunks: ['chunk-vendors', 'chunk-common', 'index'],
    },
  },
  configureWebpack: () => ({
    entry: {
      content: './src/content/main.ts',
    },

    devServer: {
      writeToDisk: true,
    },
  })
};

Файл main.ts содержит только этот

// main.ts
console.log('I am the content script');

. Для предварительной загрузки файла я добавил его в BrowserWindow

// background.ts
win = new BrowserWindow({
    width: 1200,
    height: 800,
    webPreferences: {
      nodeIntegration: false,
      nodeIntegrationInSubFrames: false,
      preload: path.resolve(__dirname, 'js', 'content.js'),
    },
  });

Проблема в том, что на таких страницах, как google.com, пользовательский скрипт не выполняется. Каким-то образом скрипт выполняется, когда я открываю BrowserWindow со страницей по умолчанию, созданной с помощью v ie -cli.

Это работает, когда я предварительно загружаю скрипт, который компилируется с помощью пользовательской конфигурации веб-пакета с машинописью.

Также, когда я просто копирую содержимое скомпилированного файла content.js и запускаю его в консоли браузера, я не получаю вывод console.log. Таким образом, vue -cli добавляет что-то в скрипт, что блокирует выполнение скрипта. Как я могу предотвратить это?

...