J'utilise le fichier main.js de biolerplate.electron de réaction électronique placé dans le dossier public. Je souhaite ajouter un autre fichier électronique aux constantes communes, aux fonctions. Lorsque j'essaie d'utiliser ce fichier, il génère une erreur au-dessus. Je veux garder main.js court .c'est pourquoi j'utilise un autre fichier

/public/renderer/command-executor.js

export const  executeCommandWithOutput=(command)=>{
    const { exec } = require('child_process');
    console.log(command);
    return new Promise((resolve, reject) => {
      console.log('inside promise');
        exec(command, (err, stdout, stderr) => {
          console.log('inside execsync');
            if (err) {
              console.log(err);

                resolve(err);
            } else if (stderr) {
              console.log(stderr)

                resolve(stderr);
            } else {
                resolve(stdout);
            }
        });
    });
  }

Public / main.js

const commandExecutor=require('./renderer/command-executor');
electron.ipcMain.on('launch-App',async(event,args)=>{
     commandExecutor.executeCommandWithOutput(`powershell -Command "& {Start-Process -Verb runas '${playLink}'}"`);

});

0
Krazy 4 févr. 2020 à 12:09

1 réponse

Meilleure réponse

Le problème est que vous essayez de mélanger l'instruction ES5 require avec la syntaxe ES6 pour export. Les deux sont incompatibles. Vous devez soit utiliser l'un ou l'autre.

En supposant que votre implémentation ES6 avec babel fonctionne correctement, vous devez utiliser l'instruction import comme ceci :

// exporting like you are at the moment (called a named export):
export const executeCommandWithOutput = (command) =>{
    ...
}

// importing like so:
import { executeCommandWithOutput } from './renderer/command-executor';

Mais si vous utilisez require dans public/main.js, votre instruction export devrait ressembler à ceci :

exports.executeCommandWithOutput = executeCommandWithOutput

Et votre require restera le même.

Voici un article pour vous aider à mieux comprendre ce qui se passe, comment la fonctionnalité export fonctionne dans ES5 et ce que vous pouvez réaliser avec :
https://www.sitepoint.com/understanding-module-exports-exports-node-js/

De même avec la syntaxe ES6 :
https://alligator.io/js/modules-es6/

2
nopassport1 4 févr. 2020 à 10:16