【问题标题】:Error: spawn ng build --watch --output-path while running gulp错误:运行 gulp 时产生 ng build --watch --output-path
【发布时间】:2017-09-01 03:58:16
【问题描述】:

我是 Angular 新手,当我尝试在 Angular 文件夹中运行 gulp 时,我收到以下错误:

[08:24:14] Using gulpfile .../angular/gulpfile.js
[08:24:14] Starting 'styles'...
[08:24:14] Starting 'angular'...
[08:24:14] Finished 'angular' after 6.44 ms
[08:24:14] Starting 'server'...
[08:24:14] Finished 'server' after 19 ms
[08:24:14] Starting 'watch'...
[08:24:14] Finished 'watch' after 53 ms
events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: spawn ng build --watch --output-path ../../public/angular/dist ENOENT
    at exports._errnoException (util.js:870:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)
    at onErrorNT (internal/child_process.js:344:16)
    at doNTCallback2 (node.js:441:9)
    at process._tickCallback (node.js:355:17)
    at Function.Module.runMain (module.js:469:11)
    at startup (node.js:136:18)
    at node.js:963:3

我已经关注了similar post 并尝试过:

rm -rf node_modules && npm cache clean && npm install

但是,仍然得到同样的错误。

【问题讨论】:

    标签: node.js angular


    【解决方案1】:

    鉴于您的错误消息,看起来您的 gulp 任务正在调用:

    spawn("ng build --watch --output-path ../../public/angular/dist")

    Spawn 要求参数与初始命令分开传递,因此您应该使用

    spawn("ng", ["build", "--watch", "--output-path", "../../public/angular/dist"])

    改为。

    https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options

    【讨论】:

      【解决方案2】:

      我在 Windows 上遇到了与 NPM angular 脚本类似的问题,您可以检查几件事。

      步骤1. 将以下代码添加到顶部,以便您知道哪个命令有问题

        /** add below childProcess logic to troubleshoot what's wrong if error happens. */
        var childProcess = require("child_process");
        var oldSpawn = childProcess.spawn;
        function mySpawn() {
            console.log('spawn called');
            console.log(arguments);
            var result = oldSpawn.apply(this, arguments);
            return result;
        }
        childProcess.spawn = mySpawn;
        spawn = childProcess.spawn;
      

      第 2 步。如果您在 Windows 上运行应用程序,您可能需要使用 ng.cmd;否则,对于其他操作系统,请使用ng.sh

        const isWindows = /^win/.test(process.platform);
        const commandFileExtension = isWindows ? 'cmd' : 'sh';
        let child = spawn(`ng.${commandFileExtension}`, ['build']);
      

      【讨论】:

        猜你喜欢
        • 2019-11-29
        • 2021-05-24
        • 2019-08-25
        • 2019-04-23
        • 2018-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-12
        相关资源
        最近更新 更多