如何在具有 canvas-data-cli 命令的 azure-scm-console 中执行 NodeJs 脚本
How to execute a NodeJs script in azure-scm-console, having canvas-data-cli command
我正在使用 node 执行代码文件形式的 azure scm 控制台。它给出错误:“'canvasDataCli' 未被识别为内部或外部命令、可运行程序或批处理文件。”
我可以 运行 直接从控制台成功执行 canvasDataCli 同步命令:
canvasDataCli sync -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);
});
});
};
我尝试将 canvasDataCli
安装到我的 KUDU 站点,如果只是 运行 canvasDataCli 它会像你的那样显示 not recognized
,这是因为 PATH 没有' t 包含变量。
所以如果你想使用 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
.
下的所有文件
在此之后您应该可以 运行 编码,但是您上传的代码似乎有一些问题。
是不是因为我的文件夹中缺少一些文件。也许你会在你的环境中取得成功。
防止错误:你最好升级你的节点版本,你可以去门户中的应用程序设置,添加设置WEBSITE_NODE_DEFAULT_VERSION
,值为8.8.1
或者你想要的其他版本。
如果您还有其他问题,请告诉我。
我通过在全局范围安装相同的包解决了我的问题,即 canvas-data-cli 在
我的-site.scm.azurewebsites.net/debugConsole
npm install canvas-data-cli -g
我认为问题在于,canvasDataCli sync 命令创建了一个新进程,该进程位于 运行 at my-site.scm.azurewebsites.net/ 并且我从
我的-site.scm.azurewebsites.net/dev/wwwroot/
我正在使用 node 执行代码文件形式的 azure scm 控制台。它给出错误:“'canvasDataCli' 未被识别为内部或外部命令、可运行程序或批处理文件。”
我可以 运行 直接从控制台成功执行 canvasDataCli 同步命令:
canvasDataCli sync -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);
});
});
};
我尝试将 canvasDataCli
安装到我的 KUDU 站点,如果只是 运行 canvasDataCli 它会像你的那样显示 not recognized
,这是因为 PATH 没有' t 包含变量。
所以如果你想使用 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
.
在此之后您应该可以 运行 编码,但是您上传的代码似乎有一些问题。
是不是因为我的文件夹中缺少一些文件。也许你会在你的环境中取得成功。
防止错误:你最好升级你的节点版本,你可以去门户中的应用程序设置,添加设置WEBSITE_NODE_DEFAULT_VERSION
,值为8.8.1
或者你想要的其他版本。
如果您还有其他问题,请告诉我。
我通过在全局范围安装相同的包解决了我的问题,即 canvas-data-cli 在
我的-site.scm.azurewebsites.net/debugConsole
npm install canvas-data-cli -g
我认为问题在于,canvasDataCli sync 命令创建了一个新进程,该进程位于 运行 at my-site.scm.azurewebsites.net/ 并且我从
我的-site.scm.azurewebsites.net/dev/wwwroot/