Node.js child_process.execFile () não funciona com o próprio .exe

votos
0

Eu estou apenas tentando mergulhar em Node.js e eu estou testando as funcionalidades básicas que considero útil para realizar meu projeto. Um deles seria a execução de um pequeno arquivo .exe I codificado em C ++ que processa dados de arquivos de texto. Eu descobri que child_process.execFile pode ser o melhor método para conseguir isso. Então eu escrevi um pequeno script para iniciar um servidor e invocar um executável. Para o primeiro teste, eu definir o caminho para uma third-party -. Exe e funcionou muito bem (programa é iniciado como esperado). No entanto, quando eu atingir meu próprio nada .exe acontece em tudo, embora o caminho está correto (o que eu countercheck com fs.access). executar manualmente o arquivo por mero duplo clique sobre o arquivo .exe também funciona totalmente bem e txt-limas estão em conformidade processado. Então agora eu pergunto se obter algo. fundamentalmente errado, por exemplo, faz a necessidade .exe para cumprir uma determinada condição de ser executável com execfile?

Aqui está o meu código:

var http = require('http');
const fs = require('fs');

var server = http.createServer(function(req, res){
    console.log('Request was made: ' + req.url);
    res.writeHead(200, {'Content-Type': 'text/plain'});
});

server.listen(3000, '127.0.0.1');
console.log('Listening to port 3000');

var executablePath = C:/path/to/file.exe;

fs.access(executablePath, fs.constants.F_OK, (err) => {
      console.log(`${executablePath} ${err ? 'does not 
      exist':'exists'}`);
});

const execFile = require('child_process').execFile;
const child = execFile(executablePath, (error, stdout, stderr) => {
    if (error) {
        console.error('stderr', stderr);
        throw error;
    }
    console.log('stdout', stdout);
});

A saída do console é ... C: /path/to/file.exe existe. não execfile não jogue qualquer erro. Thx por sua ajuda e desculpas para a minha língua de noob!

Publicado 18/12/2018 em 11:07
fonte usuário
Em outras línguas...                            


1 respostas

Node.js child_process.execFile () não funciona com o próprio .exe

votos
0

Eu estou apenas tentando mergulhar em Node.js e eu estou testando as funcionalidades básicas que considero útil para realizar meu projeto. Um deles seria a execução de um pequeno arquivo .exe I codificado em C ++ que processa dados de arquivos de texto. Eu descobri que child_process.execFile pode ser o melhor método para conseguir isso. Então eu escrevi um pequeno script para iniciar um servidor e invocar um executável. Para o primeiro teste, eu definir o caminho para uma "third-party" -. Exe e funcionou muito bem (programa é iniciado como esperado). No entanto, quando eu atingir meu próprio nada .exe acontece em tudo, embora o caminho está correto (o que eu countercheck com fs.access). executar manualmente o arquivo por mero duplo clique sobre o arquivo .exe também funciona totalmente bem e txt-limas estão em conformidade processado. Então agora eu pergunto se obter algo. fundamentalmente errado, por exemplo, faz a necessidade .exe para cumprir uma determinada condição de ser executável com execfile?

Aqui está o meu código:

var http = require('http');
const fs = require('fs');

var server = http.createServer(function(req, res){
    console.log('Request was made: ' + req.url);
    res.writeHead(200, {'Content-Type': 'text/plain'});
});

server.listen(3000, '127.0.0.1');
console.log('Listening to port 3000');

var executablePath = "C:/path/to/file.exe";

fs.access(executablePath, fs.constants.F_OK, (err) => {
      console.log(`${executablePath} ${err ? 'does not 
      exist':'exists'}`);
});

const execFile = require('child_process').execFile;
const child = execFile(executablePath, (error, stdout, stderr) => {
    if (error) {
        console.error('stderr', stderr);
        throw error;
    }
    console.log('stdout', stdout);
});

A saída do console é "... C: /path/to/file.exe existe". não execfile não jogue qualquer erro. Thx por sua ajuda e desculpas para a minha língua de noob!

Respondeu 18/12/2018 em 11:07
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more