Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js azure不接受环境变量_Node.js_Azure_Environment Variables_Azure Storage_Azure Storage Blobs - Fatal编程技术网

Node.js azure不接受环境变量

Node.js azure不接受环境变量,node.js,azure,environment-variables,azure-storage,azure-storage-blobs,Node.js,Azure,Environment Variables,Azure Storage,Azure Storage Blobs,我在终端中为azure定义了环境变量,如下所示 SET AZURE_STORAGE_ACCOUNT=accountname SET SAS_TOKEN="sr=c&sp=rwl&sig=signatureKey%3D&sv=2017-04-17&se=2018-03-10" 在定义了varibale之后,我在azure blob存储函数中调用了这些变量 AZURE_STORAGE_ACCOUNT= process.env.AZURE_STORAGE_ACCOUN

我在终端中为azure定义了环境变量,如下所示

SET AZURE_STORAGE_ACCOUNT=accountname
SET SAS_TOKEN="sr=c&sp=rwl&sig=signatureKey%3D&sv=2017-04-17&se=2018-03-10"
在定义了varibale之后,我在azure blob存储函数中调用了这些变量

AZURE_STORAGE_ACCOUNT= process.env.AZURE_STORAGE_ACCOUNT;
SAS_TOKEN = process.env.SAS_TOKEN;
var blobUri = "http://"+AZURE_STORAGE_ACCOUNT+".blob.core.windows.net";
var blobService = azureStorage.createBlobServiceWithSas(blobUri, SAS_TOKEN).withFilter(new azureStorage.ExponentialRetryPolicyFilter());
blobService.createBlockBlobFromLocalFile('mycontainer', 'sparks-events-data', fileToWrite, function(error, result, response) {
if (!error) {
    console.log("upload successful..");
} else {
    console.log(error);
}});
当我运行上述文件时,我得到的错误如下

StorageError:服务器无法验证请求。确保 授权标头的值已正确形成,包括 签名

但是,当我直接在代码中调用SAS令牌时,它可以正常工作。我是这样用的

var sasKey = "sr=c&sp=rwl&sig=signatureKey%3D&sv=2017-04-17&se=2018-03-10";
var blobService = azureStorage.createBlobServiceWithSas(blobUri, sasKey ).withFilter(new azureStorage.ExponentialRetryPolicyFilter());
这对我来说很好。我需要将SAS令牌设置为环境变量。这就是我所缺少的。请有人给我一个解决方案。 提前感谢,

将这些环境变量导出。导出变量会导致该变量被该shell中启动的后续进程继承

在使用自己的env var机密处理逻辑之前,您可能需要先看看这个npm包。作为一个民族,我们已经解决了这个问题-

在Windowsland中,只需使用set,但请确保节点进程在同一终端窗口中启动:

C:\lab> set KEY="secret"

C:\lab> type app.js
let key = process.env.KEY;
console.log('KEY is ' + key);

C:\lab> node app.js
KEY is "secret"

注意那些引语

export命令在linux机器中使用。我正试图在windows机器中设置它。谢谢。是否有其他方法可以使用特殊字符来声明此环境变量,而不是使用npm Package现在是什么阻止了您使用特殊字符?这是我需要设置为环境变量sr=c&sp=rwl&sig=signatureKey%3D&sv=2017-04-17&se=2018-03-10的值。但是当我读到它显示它带有双引号时,你可以借用dotenv-的解析逻辑。或者您也可以使用dotenv:
C:\lab> set KEY="secret"

C:\lab> type app.js
let key = process.env.KEY;
console.log('KEY is ' + key);

C:\lab> node app.js
KEY is "secret"