2017-07-06 7 views
0

J'ai une application MEAN (Angular 2) fonctionnant sur un serveur Windows. Je cours mon application avec iisnode sur le serveur. L'application fonctionne bien, mais à un moment donné, j'essaie de générer un processus enfant avec un nœud (powershell.exe). Tout fonctionne correctement localement (le script powershell s'exécute avec succès) mais lorsque je le teste à partir de l'URL du serveur, le processus fils ne se reproduit jamais. Je n'ai aucun message d'erreur, l'application s'arrête un peu. Lorsque j'exécute node.js à partir de l'invite de commande avec "node server.js" et que je vais à: http://myserver.com:9000 alors l'application fonctionne correctement et le processus fils engendre avec succès.Le processus enfant n'apparaît pas avec iisnode

J'ai essayé de mettre le chemin absolu de powershell.exe mais cela ne fonctionne pas non plus.

localhost: 9000: application fonctionne, pontes enfant processus ans fonctionne très bien

myserver.com:9000: application fonctionne, pontes enfant processus ans fonctionne bien

myserver.com/: application fonctionne, enfant processus ne se reproduit pas, aucun message d'erreur

Voici mon web.config fichier:

<configuration> 
    <system.webServer> 
    <!-- indicates that the hello.js file is a node.js application 
    to be handled by the iisnode module --> 
    <handlers> 
     <add name="iisnode" path="server.js" verb="*" modules="iisnode" /> 
    </handlers>  
    <rewrite> 
     <rules> 
     <rule name="server"> 
      <match url="/*" /> 
      <action type="Rewrite" url="server.js" /> 
     </rule> 
     </rules> 
    </rewrite> 
    </system.webServer> 
</configuration> 

Et voici les .js itinéraire d'où je Spawn l'enfant processus:

child = spawn("powershell.exe",[`some commands`]); 
child.stdout.on("data",function(data){ 
    console.log("Powershell Data: " + data); 
}); 
child.stderr.on("data",function(data){ 
    console.log("Powershell Errors: " + data); 
}); 
child.on("exit",function(){ 
    console.log("Powershell Script finished"); 
    //some other commands 
}); 
child.stdin.end(); 

Répondre

1

Enfin, il est apparu que la powershell.exe engendrait correctement. Cependant, le script PowerShell était censé ouvrir Powerpoint et y faire quelques actions. Cette partie ne fonctionnerait pas, et Powershell soulèverait cette erreur:

Insufficient memory to continue the execution of the program

Cela a été résolu en modifiant config DCOM, comme le suggère ici: How to deploy COM object Microsoft.Office.Interop to IIS so that my C# WCF service reference will work?