node.js
  • cordova
  • child-process
  • spawn
  • 2017-10-18 10 views 1 likes 
    1

    대상 장치로 cordova 명령을 실행하려고합니다. 나는 명령을 테스트했지만 작동하지만 코드로 생성하려고하면 등호가 무시되므로 실행되지 않습니다. 이 코드는 내가 잘못 여기서 뭐하는 거지 "--target='iPhone-7-Plus"node.js 등호를 무시한 child_process 스폰 0

    return new Promise((resolve, reject) => { 
        const executable = "ionic"; 
        const arguments = [ 
        "cordova", 
        buildOnly ? "build" : "run", 
        platform, 
        "--no-interactive", 
        "--verbose", 
        "--target='iPhone-7-Plus'" 
        ].concat(releaseDev === "release" ? ["--prod", "--release"] : []); 
        console.log(executable, arguments.join(" ")); 
        const child = spawn(executable, arguments, { 
        stdio: "inherit" 
        }); 
        child.on("close",() => resolve()); 
        child.on("error", err => reject(err)); 
    }); 
    

    의 추가로 그냥 작동합니까? 왜 내 등호만을 무시 하겠지만 명령의 나머지 부분은 추가됩니까?

    cordova run ios --target='iPhone-7-Plus'을 실행하면 명령이 실행되어 문제없이 7+ 시뮬레이터가 시작됩니다.

    +0

    이 줄에는''--target = 'iphone-7-plus''가 있는데, 문제가 될 수 있습니까? –

    +0

    @DavidGatti 내 잘못, 내가 그 잘못을 복사했습니다. 내 코드에서는 명령 행에 직접 입력 할 때'''와''cordova run ios --target = 'iPhone-7-Plus' '가 문제없이 실행됩니다. –

    +0

    질문을 업데이트하는 것이 좋습니다. 그리고 만약에'buildOnly? '배열 안의 if else 문을 제거하는 것은 어떨까요? "build": "run", "hardcore approach"라고 말하면서, spaw에 전달하기 전에 console.log를 사용하여 거기에있는 모든 조작을 살펴 봅니다. –

    답변

    1

    산란시 내 os의 기본 셸을 사용하기 위해 shell: true을 추가해야했습니다. 스폰하는 쉘은 특수 문자를 제거합니다.

    const child = spawn(executable, arguments, { 
        stdio: "inherit", 
        shell: true 
    }); 
    

     관련 문제

    • 관련 문제 없음^_^