Gulp에서 child_process는 이전 단계에서 생성 된 JS 프로그램을 실행하지 못합니다.

시부 루

나는 그런 꿀꺽 꿀꺽 스크립트를 썼다.

간단히 말해서이 스크립트는 다음을 수행합니다.

  1. JS 프로그램 정리 (제거)
  2. JS 프로그램 빌드
  3. JS 프로그램 실행

이 스크립트는 때때로 (항상은 아님) 실패하지만 그 이유는 무엇입니까?

var gulp = require('gulp'),
    babel = require('gulp-babel'),
    rename = require('gulp-rename'),
    concat = require('gulp-concat');

var runSequence = require('run-sequence'),
    del = require('del'),
    exec = require('child_process').exec;

gulp.task('build', function () {
    gulp.src('*.es')
        .pipe(babel())
        .pipe(rename({extname: '.js'}))
        .pipe(gulp.dest('./dist'))
        .pipe(concat('app.js'))
        .pipe(gulp.dest('./dist'));
});

gulp.task('clean', function () {
    del(['dist']);
});

gulp.task('exec', function (cb) {
    exec('node dist/app.js', function (err, stdout, stderr) {
        console.log(stdout);
        console.log(stderr);
        cb(err);
    });
});

gulp.task('default', function (cb) {
    runSequence('clean', 'build', 'exec', cb);
});

오류 메시지는 다음과 같습니다.

someone@somewhere:~/***/***% gulp
[15:17:15] Using gulpfile ~/***/***/gulpfile.js
[15:17:15] Starting 'default'...
[15:17:15] Starting 'clean'...
[15:17:15] Finished 'clean' after 4.28 ms
[15:17:15] Starting 'build'...
[15:17:15] Finished 'build' after 12 ms
[15:17:15] Starting 'exec'...

module.js:338
    throw err;
          ^
Error: Cannot find module '/***/***/dist/app.js'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:278:25)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3

[15:17:15] 'exec' errored after 119 ms
[15:17:15] Error: Command failed: /bin/sh -c node dist/app.js
module.js:338
    throw err;
          ^
Error: Cannot find module '/***/***/dist/app.js'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:278:25)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3

    at ChildProcess.exithandler (child_process.js:751:12)
    at ChildProcess.emit (events.js:110:17)
    at maybeClose (child_process.js:1015:16)
    at Socket.<anonymous> (child_process.js:1183:11)
    at Socket.emit (events.js:107:17)
    at Pipe.close (net.js:485:12)
[15:17:15] 'default' errored after 142 ms
[15:17:15] Error: Command failed: /bin/sh -c node dist/app.js
module.js:338
    throw err;
          ^
Error: Cannot find module '/***/***/dist/app.js'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:278:25)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3

    at ChildProcess.exithandler (child_process.js:751:12)
    at ChildProcess.emit (events.js:110:17)
    at maybeClose (child_process.js:1015:16)
    at Socket.<anonymous> (child_process.js:1183:11)
    at Socket.emit (events.js:107:17)
    at Pipe.close (net.js:485:12)

흥미롭게도 "gulp exec"를 다시 실행하면 성공할 것입니다.

gulp가 작업이 언제 완료되었는지 알 수 있도록 작업에서 작업중인 스트림을 반환해야합니다.

var gulp = require('gulp'),
    babel = require('gulp-babel'),
    rename = require('gulp-rename'),
    concat = require('gulp-concat');

var runSequence = require('run-sequence'),
    del = require('del'),
    exec = require('child_process').exec;

gulp.task('build', function () {
    return gulp.src('*.es')
        .pipe(babel())
        .pipe(rename({extname: '.js'}))
        .pipe(gulp.dest('./dist'))
        .pipe(concat('app.js'))
        .pipe(gulp.dest('./dist'));
});

gulp.task('clean', function () {
    return del(['dist']);
});

gulp.task('exec', function (cb) {
    exec('node dist/app.js', function (err, stdout, stderr) {
        console.log(stdout);
        console.log(stderr);
        cb(err);
    });
});

gulp.task('default', function (cb) {
    runSequence('clean', 'build', 'exec', cb);
});

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Nodejs는 전체 경로에서 exe를 실행합니다. child_process

분류에서Dev

for 루프에서 다른 샘플에 대해 생성 된 파이썬 프로그램을 실행하는 방법은 무엇입니까?

분류에서Dev

PCLZIP은 실행 파일이 포함 된 zip으로 잘못 해석되어 Gmail에서 차단하는 zip을 생성합니다.

분류에서Dev

Resharper는 지정된 폴더에서 단위 테스트를 실행하지만 응용 프로그램 구성 파일이 없습니다.

분류에서Dev

파이썬의 다른 프로그램에서 활성화되어 프로그램을 실행하는 방법

분류에서Dev

스프링 배치는 tasklet에서 동적으로 생성 된 단계를 실행합니다.

분류에서Dev

node.js 보안 / 이스케이프에서 child_process 생성

분류에서Dev

gradle의 응용 프로그램 플러그인으로 생성 된 시작 스크립트에서 프로그램 이름을 응용 프로그램에 전달하려면 어떻게해야합니까?

분류에서Dev

다른 프로그램에 대해 올바르게 인용 된 명령 줄 인수를 생성하는 프로그램을 어떻게 작성합니까?

분류에서Dev

Node.js child_process spawn을 사용하여 파이프로 장기 실행 명령을 실행하는 방법 [편집 : 특히 grep에 파이핑]

분류에서Dev

IPU 모델에서 Tensorflow 프로그램을 실행하면 '잘못된 명령어 (코어 덤프)'오류가 발생합니다.

분류에서Dev

호출 된 프로그램에서 예외가 발생하면 Windows 작업이 계속 실행됩니까?

분류에서Dev

설치 프로그램을 사용하여 ASP.Net 웹 응용 프로그램을 설치할 때 xxx 설치 오류가 발생하기 전에 설치 프로그램이 중단 된 이유는 무엇입니까?

분류에서Dev

Hibernate는 봄 응용 프로그램에서 자동으로 테이블을 생성하지 않습니다

분류에서Dev

Hibernate는 봄 응용 프로그램에서 자동으로 테이블을 생성하지 않습니다

분류에서Dev

웹 페이지의 캔버스에서 실행되는 Processing.js 프로그램 내에서 사운드를 재생하는 방법은 무엇입니까?

분류에서Dev

CLR이 powershell에서 잘못된 프로그램을 감지했습니다.

분류에서Dev

인텔 어셈블리 언어로 작성된 프로그램을 PowerPC 프로세서에서 실행할 수없는 이유는 무엇입니까?

분류에서Dev

응용 프로그램이하게 IntelliJ IDEA에서 실행되는 경우 Mapstruct 생성 된 클래스가 발견되지

분류에서Dev

Java 프로그램에서 이전에 실행 된 쉘 스크립트를 중지하는 방법

분류에서Dev

Qt Creator에서 응용 프로그램을 실행하면 오류 QXcbConnection이 발생하고 중단됩니다.

분류에서Dev

이 프로그램을 C #에서 실행할 때 오류가 발생합니다. 'Movies'메서드에 대한 오버로드가 '0'인수를 사용하지 않습니다. 나는 그것을하는 방법이 필요하다

분류에서Dev

감지 된 드라이브에서 프로그램을 실행하는 Java 코드

분류에서Dev

powershell이 cmd에서 실행되어 프로그램을 시작하고 종료합니다. 프로그램은 계속 실행되지만 powershell은

분류에서Dev

프로그램에서 생성 된 사용량 출력의 합계를 스크립트로 구현하여 반복 실행을 통해 정상적으로 수행되도록하는 방법은 무엇입니까?

분류에서Dev

이클립스에서 appium의 도움으로 프로그램을 실행할 때 세션이 생성되지 않음 오류가 발생합니다.

분류에서Dev

내 프로그램이 Linux에서 실행될 때 splice syscall이 실패하지만 gdb에서 실행되면 성공하는 이유는 무엇입니까?

분류에서Dev

Wine은 다른 드라이브에 설치된 .exe 프로그램을 실행하지 않습니다.

분류에서Dev

Wine에서 실행되는이 Windows 프로그램이 인수에 대한 절대 경로 이름을 인식하지 못합니까?

Related 관련 기사

  1. 1

    Nodejs는 전체 경로에서 exe를 실행합니다. child_process

  2. 2

    for 루프에서 다른 샘플에 대해 생성 된 파이썬 프로그램을 실행하는 방법은 무엇입니까?

  3. 3

    PCLZIP은 실행 파일이 포함 된 zip으로 잘못 해석되어 Gmail에서 차단하는 zip을 생성합니다.

  4. 4

    Resharper는 지정된 폴더에서 단위 테스트를 실행하지만 응용 프로그램 구성 파일이 없습니다.

  5. 5

    파이썬의 다른 프로그램에서 활성화되어 프로그램을 실행하는 방법

  6. 6

    스프링 배치는 tasklet에서 동적으로 생성 된 단계를 실행합니다.

  7. 7

    node.js 보안 / 이스케이프에서 child_process 생성

  8. 8

    gradle의 응용 프로그램 플러그인으로 생성 된 시작 스크립트에서 프로그램 이름을 응용 프로그램에 전달하려면 어떻게해야합니까?

  9. 9

    다른 프로그램에 대해 올바르게 인용 된 명령 줄 인수를 생성하는 프로그램을 어떻게 작성합니까?

  10. 10

    Node.js child_process spawn을 사용하여 파이프로 장기 실행 명령을 실행하는 방법 [편집 : 특히 grep에 파이핑]

  11. 11

    IPU 모델에서 Tensorflow 프로그램을 실행하면 '잘못된 명령어 (코어 덤프)'오류가 발생합니다.

  12. 12

    호출 된 프로그램에서 예외가 발생하면 Windows 작업이 계속 실행됩니까?

  13. 13

    설치 프로그램을 사용하여 ASP.Net 웹 응용 프로그램을 설치할 때 xxx 설치 오류가 발생하기 전에 설치 프로그램이 중단 된 이유는 무엇입니까?

  14. 14

    Hibernate는 봄 응용 프로그램에서 자동으로 테이블을 생성하지 않습니다

  15. 15

    Hibernate는 봄 응용 프로그램에서 자동으로 테이블을 생성하지 않습니다

  16. 16

    웹 페이지의 캔버스에서 실행되는 Processing.js 프로그램 내에서 사운드를 재생하는 방법은 무엇입니까?

  17. 17

    CLR이 powershell에서 잘못된 프로그램을 감지했습니다.

  18. 18

    인텔 어셈블리 언어로 작성된 프로그램을 PowerPC 프로세서에서 실행할 수없는 이유는 무엇입니까?

  19. 19

    응용 프로그램이하게 IntelliJ IDEA에서 실행되는 경우 Mapstruct 생성 된 클래스가 발견되지

  20. 20

    Java 프로그램에서 이전에 실행 된 쉘 스크립트를 중지하는 방법

  21. 21

    Qt Creator에서 응용 프로그램을 실행하면 오류 QXcbConnection이 발생하고 중단됩니다.

  22. 22

    이 프로그램을 C #에서 실행할 때 오류가 발생합니다. 'Movies'메서드에 대한 오버로드가 '0'인수를 사용하지 않습니다. 나는 그것을하는 방법이 필요하다

  23. 23

    감지 된 드라이브에서 프로그램을 실행하는 Java 코드

  24. 24

    powershell이 cmd에서 실행되어 프로그램을 시작하고 종료합니다. 프로그램은 계속 실행되지만 powershell은

  25. 25

    프로그램에서 생성 된 사용량 출력의 합계를 스크립트로 구현하여 반복 실행을 통해 정상적으로 수행되도록하는 방법은 무엇입니까?

  26. 26

    이클립스에서 appium의 도움으로 프로그램을 실행할 때 세션이 생성되지 않음 오류가 발생합니다.

  27. 27

    내 프로그램이 Linux에서 실행될 때 splice syscall이 실패하지만 gdb에서 실행되면 성공하는 이유는 무엇입니까?

  28. 28

    Wine은 다른 드라이브에 설치된 .exe 프로그램을 실행하지 않습니다.

  29. 29

    Wine에서 실행되는이 Windows 프로그램이 인수에 대한 절대 경로 이름을 인식하지 못합니까?

뜨겁다태그

보관