【问题标题】:How to execute a NodeJs script in azure-scm-console, having canvas-data-cli command如何在 azure-scm-console 中使用 canvas-data-cli 命令执行 NodeJs 脚本
【发布时间】:2019-05-20 22:51:42
【问题描述】:

我正在使用 node 执行来自 azure scm 控制台的代码文件。它给出错误:“'canvasDataCli' 未被识别为内部或外部命令、可运行程序或批处理文件。”

我可以直接从控制台成功运行canvasDataCli同步命令:

canvasDataCli 同步 -c ./config.js

这里是代码文件,test.js

   var Promise = require('promise');

   require('canvas-data-cli');

   var s='./config.js';
   var command=`canvasDataCli sync -c  ${s}`;

   function exec_command_promise(cmd) {
   return new Promise(function (resolve, reject) {

    var exec = require('child_process').exec;
    var child_process = exec(cmd);

    // event : stdout
    child_process.stdout.on('data', data => {
        console.log(data);
    });

    // event : stderr
    child_process.stderr.on('data', data => {
        console.log(data);
        reject(data);
    });

    // event : close
    child_process.on('close', data => {
        console.log(data);
        resolve(data);
    });

   }); 
   };

【问题讨论】:

    标签: node.js canvas azure-web-app-service azure-app-service-envrmnt


    【解决方案1】:

    我尝试将canvasDataCli 安装到我的KUDU 站点,如果只运行canvasDataCli,它会像你一样显示not recognized,这是因为PATH 不包含变量。

    所以如果你想使用canvasDataCli,你需要设置PATH,你可以使用set PATH=D:\local\AppData\npm;%PATH%,然后检查变量是否设置为which canvasDataCli。如果成功,它将显示/d/local/AppData/npm/canvasDataCli

    不过这是一个临时变量,您也可以使用applicationHost.xdt 文件将其设置为永久变量。你需要把它放在d:\home\site\下。

    这是applicationHost.xdt的内容。

    <?xml version="1.0"?> 
    <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
     <system.webServer> 
      <runtime xdt:Transform="InsertIfMissing">
       <environmentVariables xdt:Transform="InsertIfMissing">
        <add name="PATH" value="D:\local\AppData\npm;%PATH%" xdt:Locator="Match(name)" 
        xdt:Transform="InsertIfMissing" />    
       </environmentVariables>
      </runtime> 
     </system.webServer> 
    </configuration>
    

    但是如果你想使用这种方式,你需要先设置环境变量然后安装canvas-data-cli。否则会删除D:\local\AppData\npm下的所有文件。

    在此之后您应该能够运行代码,但是您上传的代码似乎有一些问题。

    是不是因为我的文件夹中缺少一些文件。也许你会在你的环境中取得成功。

    防止错误:你最好升级你的node版本,你可以到portal里面的Application settings,把设置WEBSITE_NODE_DEFAULT_VERSION加上8.8.1或者你想要的其他版本。

    如果您还有其他问题,请告诉我。

    【讨论】:

    • @Muhammad Umar Farooq 如果我的回答有效,您可以标记我的回答。谢谢!
    【解决方案2】:

    我通过在全局范围内安装相同的包解决了我的问题,即 canvas-data-cli at

    my-site.scm.azurewebsites.net/debugConsole

    npm install canvas-data-cli -g

    我认为问题在于,canvasDataCli 同步命令创建了一个新进程,该进程正在 my-site.scm.azurewebsites.net/ 上运行,而我正在从

    执行它

    my-site.scm.azurewebsites.net/dev/wwwroot/

    【讨论】:

      猜你喜欢
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 2012-11-20
      • 1970-01-01
      • 2019-05-09
      相关资源
      最近更新 更多