zoukankan      html  css  js  c++  java
  • 利用Node.js编写跨平台的spawn语句

    node

    const child = cp.spawn('npm', ['run', 'build']);

     报错

    events.js:182
          throw er; // Unhandled 'error' event
          ^
    
    Error: spawn npm ENOENT
        at exports._errnoException (util.js:1016:11)
        at Process.ChildProcess._handle.onexit (internal/child_process.js:189:19)
        at onErrorNT (internal/child_process.js:366:16)
        at _combinedTickCallback (internal/process/next_tick.js:102:11)
        at process._tickCallback (internal/process/next_tick.js:161:9)
    

    原因:

    当我们执行 npm 时,我们实际执行的是 npm.cmd 批处理,而在 Windows 上,.cmd.bat 批处理是无法脱离 cmd.exe 这一解释器而单独运行的

    解决方案:

    1.显式地调用 cmd,

    spawn('cmd', ['/c', 'npm'], {
      stdio: 'inherit'
    });

    2.调用 spawn 函数时,设置 shell 选项为 true 以隐式地调用 cmd (该选项添加自 Node.js v6 版本)

    spawn('npm', {
      stdio: 'inherit',
      shell: true
    });

    针对最上面的代码,可以修改为:

    const child = cp.spawn('npm', ['run', 'build'], { shell: process.platform === 'win32' });

    相关链接:

    zzz.buzz:Node.js 编写跨平台 spawn 语句

  • 相关阅读:
    在排序数组中查找元素
    搜索旋转排序数组
    下一个排列
    括号生成(回溯法)
    PHP之表单
    PHP之超级全局变量
    PHP之数组
    PHP之字符串
    PHP之常量
    PHP之echo/print
  • 原文地址:https://www.cnblogs.com/3teeth/p/7383014.html
Copyright © 2011-2022 走看看