VMware {code} Community
leeheu
Contributor
Contributor

Cannot run program "ng" error while running build-plugin-package.xml in the plugin-seed project

I run the scripts "tools\generate-plugin.bat" to generate myplugin-service and myplugin-ui, when I run the " build-plugin-package.bat " inside myplugin-ui, it throws exceptions saying "ng" is not found. However I already have latest nodejs and angular cli installed globally,  they are available:

ng -v:

@angular/cli: 1.0.0
node: 6.10.2
os: win32 x64
------------------------------------------------------------------------------------------------------------------------------

in my system environemnt variables , they are defined as well

PATH: $PATH;C:\Users\admin\AppData\Roaming\npm

Attaching the error while running "build-plugin-package.bat":

---------------------------------------------------------------------------------------------------------------------------------

C:\Users\admin\workspace\myplugin\myplugin-ui\tools>build-plugin-package.bat

Using the Adobe Flex SDK files bundled with the vSphere Client SDK

Buildfile: C:\Users\admin\workspace\myplugin\myplugin-ui\tools\build-plugin-p

ackage.xml

buildUiWar:

clean:

ng-build:

BUILD FAILED

C:\Users\\admin\workspace\myplugin\myplugin-ui\tools\build-plugin-package.xml:

22: The following error occurred while executing this line:

C:\Users\admin\workspace\myplugin\myplugin-ui\tools\build-war.xml:46: Execute

failed: java.io.IOException: Cannot run program "ng" (in directory "C:\Users\admin\workspace\myplugin\myplugin-ui\tools"): CreateProcess error=2, The system

cannot find the file specified

        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)

        at java.lang.Runtime.exec(Runtime.java:620)

        at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Jav

a13CommandLauncher.java:58)

        at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:426)

        at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:440)

        at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:629)

        at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:670)

        at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:496)

        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)

        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces

sorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:497)

        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav

a:106)

        at org.apache.tools.ant.Task.perform(Task.java:348)

        at org.apache.tools.ant.Target.execute(Target.java:435)

        at org.apache.tools.ant.Target.performTasks(Target.java:456)

        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405)

        at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(Single

CheckExecutor.java:38)

        at org.apache.tools.ant.Project.executeTargets(Project.java:1260)

        at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)

        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.

java:62)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces

sorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:497)

        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav

a:106)

        at org.apache.tools.ant.Task.perform(Task.java:348)

        at org.apache.tools.ant.Target.execute(Target.java:435)

        at org.apache.tools.ant.Target.performTasks(Target.java:456)

        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405)

        at org.apache.tools.ant.Project.executeTarget(Project.java:1376)

        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExe

cutor.java:41)

        at org.apache.tools.ant.Project.executeTargets(Project.java:1260)

        at org.apache.tools.ant.Main.runBuild(Main.java:857)

        at org.apache.tools.ant.Main.startAnt(Main.java:236)

        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:287)

        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:113)

Caused by: java.io.IOException: CreateProcess error=2, The system cannot find th

e file specified

        at java.lang.ProcessImpl.create(Native Method)

        at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)

        at java.lang.ProcessImpl.start(ProcessImpl.java:137)

        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)

        ... 36 more

Total time: 0 seconds

C:\Users\li\workspace\vcplugin38x\vcplugin38x-ui\tools>build-plugin-package.bat

Using the Adobe Flex SDK files bundled with the vSphere Client SDK

Buildfile: C:\Users\li\workspace\vcplugin38x\vcplugin38x-ui\tools\build-plugin-p

ackage.xml

buildUiWar:

clean:

ng-build:

BUILD FAILED

C:\Users\li\workspace\vcplugin38x\vcplugin38x-ui\tools\build-plugin-package.xml:

22: The following error occurred while executing this line:

C:\Users\li\workspace\vcplugin38x\vcplugin38x-ui\tools\build-war.xml:46: Execute

failed: java.io.IOException: Cannot run program "ng" (in directory "C:\Users\li

\workspace\vcplugin38x\vcplugin38x-ui\tools"): CreateProcess error=2, The system

cannot find the file specified

        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)

        at java.lang.Runtime.exec(Runtime.java:620)

        at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Jav

a13CommandLauncher.java:58)

        at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:426)

        at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:440)

        at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:629)

        at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:670)

        at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:496)

        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)

        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces

sorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:497)

        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav

a:106)

        at org.apache.tools.ant.Task.perform(Task.java:348)

        at org.apache.tools.ant.Target.execute(Target.java:435)

        at org.apache.tools.ant.Target.performTasks(Target.java:456)

        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405)

        at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(Single

CheckExecutor.java:38)

        at org.apache.tools.ant.Project.executeTargets(Project.java:1260)

        at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)

        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.

java:62)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces

sorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:497)

        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav

a:106)

        at org.apache.tools.ant.Task.perform(Task.java:348)

        at org.apache.tools.ant.Target.execute(Target.java:435)

        at org.apache.tools.ant.Target.performTasks(Target.java:456)

        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405)

        at org.apache.tools.ant.Project.executeTarget(Project.java:1376)

        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExe

cutor.java:41)

        at org.apache.tools.ant.Project.executeTargets(Project.java:1260)

        at org.apache.tools.ant.Main.runBuild(Main.java:857)

        at org.apache.tools.ant.Main.startAnt(Main.java:236)

        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:287)

        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:113)

Caused by: java.io.IOException: CreateProcess error=2, The system cannot find th

e file specified

        at java.lang.ProcessImpl.create(Native Method)

        at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)

        at java.lang.ProcessImpl.start(ProcessImpl.java:137)

        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)

        ... 36 more

Total time: 0 seconds
0 Kudos
4 Replies
laurentsd
VMware Employee
VMware Employee

Does "ng build" work on the command line in your plugin UI directory?

0 Kudos
leeheu
Contributor
Contributor

@laurentsd Yes the "ng build" is working, and build couple ui files: 

Time: 28110ms

chunk    {0} main.bundle.js, main.bundle.js.map (main) 198 kB {3} [initial] [ren
dered]
chunk    {1} scripts.bundle.js, scripts.bundle.js.map (scripts) 576 kB {4} [init
ial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 396 kB {4} [initial
] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 3.78 MB [initial] [
rendered]
chunk    {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [re
ndered]
 
 
 
Hash: 16b1d3a7e9a6e181ba3e
Time: 28110ms
chunk    {0} main.bundle.js, main.bundle.js.map (main) 198 kB {3} [initial] [ren
dered]
chunk    {1} scripts.bundle.js, scripts.bundle.js.map (scripts) 576 kB {4} [init
ial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 396 kB {4} [initial
] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 3.78 MB [initial] [
rendered]
chunk    {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [re
ndered]
0 Kudos
laurentsd
VMware Employee
VMware Employee

The fix for Windows is to replace ng with ng.cmd in build-war.xml, like this:

<!-- normal build -->
<target name="ng-build">
  <exec executable="ng.cmd">
  <arg value="build"/>
  </exec>
</target>

<!-- production build, including the AOT option required to lazy loaded modules -->
<target name="ng-build-prod">
  <exec executable="ng.cmd">
  <arg value="build"/>
  <arg value="--prod"/>
  <arg value="--aot"/>
  </exec>
</target>

0 Kudos
leeheu
Contributor
Contributor

Awesome, thanks! It's working now.
0 Kudos