Javascript Azure函数超时或尝试写入本地文件系统时出错

Javascript Azure函数超时或尝试写入本地文件系统时出错,javascript,node.js,azure,azure-functions,Javascript,Node.js,Azure,Azure Functions,我想完成的是:logic应用程序将excel文件从SFTP保存到blob存储。然后,逻辑应用程序将blob详细信息传递给azure函数,该函数检索blob并在本地存储。下一个函数获取本地存储的excel文件的路径,并将其解析为JSON。然后将该JSON插入数据库中。我在本地工作 问题是试图获取第一个函数,在其中传递blob的文件名和容器并读取它。从那里它应该可以拯救它。我尝试在azure函数上使用D:/HOME或'D:/local/Temp/,但没有成功 我要么在使用这些路径时出现此异常 Exc

我想完成的是:logic应用程序将excel文件从SFTP保存到blob存储。然后,逻辑应用程序将blob详细信息传递给azure函数,该函数检索blob并在本地存储。下一个函数获取本地存储的excel文件的路径,并将其解析为JSON。然后将该JSON插入数据库中。我在本地工作

问题是试图获取第一个函数,在其中传递blob的文件名和容器并读取它。从那里它应该可以拯救它。我尝试在azure函数上使用D:/HOME'D:/local/Temp/,但没有成功

我要么在使用这些路径时出现此异常

Exception while executing function: Functions.retrieveAndStoreBlobFile. mscorlib: StorageError: NotFound
at Function.StorageServiceClient._normalizeError (D:\home\site\wwwroot\node_modules\azure-storage\lib\common\services\storageserviceclient.js:1181:23)
at BlobService.StorageServiceClient._processResponse (D:\home\site\wwwroot\node_modules\azure-storage\lib\common\services\storageserviceclient.js:736:50)
at Request.processResponseCallback [as _callback] (D:\home\site\wwwroot\node_modules\azure-storage\lib\common\services\storageserviceclient.js:317:37)
at Request.self.callback (D:\home\site\wwwroot\node_modules\azure-storage\node_modules\request\request.js:187:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:191:7)
at Request.<anonymous> (D:\home\site\wwwroot\node_modules\azure-storage\node_modules\request\request.js:1044:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:188:7)
at IncomingMessage.<anonymous> (D:\home\site\wwwroot\node_modules\azure-storage\node_modules\request\request.js:965:12).
这是我的repo,可以从blob存储中读取并保存文件

var azure = require('azure-storage');
var fs = require('fs');

const localFileStoragePath = process.env["LocalDiskLocation"];
var webStorageConnectionString = process.env["AzureWebJobsStorage"];
var blobService = azure.createBlobService(webStorageConnectionString);

var exportObject = {
getBlob: function(container, blobName){
    return new Promise ( (resolve, reject) => {
        // Read file from blob and store on drive
        blobService.getBlobToStream(container, blobName, 
fs.createWriteStream(localFileStoragePath + blobName), function(error, serverBlob) {
            if(error){
                reject(error);
                return;
            }
            const blobDetails  = {
                filePath: localFileStoragePath + blobName,
                blobDetails: JSON.stringify(serverBlob)
            }
            // Return blob details and path to file
            resolve(blobDetails);
        }); 
    });
}
}

module.exports = exportObject;
有什么想法吗


编辑:进一步研究后,似乎在D:\Home目录上创建了一个空白文件,但不包含任何内容。错误似乎指向blob存储,这很奇怪,因为请求与我的本地请求完全相同

…我想出来了

显然,function app中我的AzureWebJobsStorage值指向了另一个存储。用正确的更新来修复它

var azure = require('azure-storage');
var fs = require('fs');

const localFileStoragePath = process.env["LocalDiskLocation"];
var webStorageConnectionString = process.env["AzureWebJobsStorage"];
var blobService = azure.createBlobService(webStorageConnectionString);

var exportObject = {
getBlob: function(container, blobName){
    return new Promise ( (resolve, reject) => {
        // Read file from blob and store on drive
        blobService.getBlobToStream(container, blobName, 
fs.createWriteStream(localFileStoragePath + blobName), function(error, serverBlob) {
            if(error){
                reject(error);
                return;
            }
            const blobDetails  = {
                filePath: localFileStoragePath + blobName,
                blobDetails: JSON.stringify(serverBlob)
            }
            // Return blob details and path to file
            resolve(blobDetails);
        }); 
    });
}
}

module.exports = exportObject;