我使用Node.js创建了Azure Function微服务,并且我使用npm模块azure-storage在Blob存储中插入文件。
本地工作正常,但在部署到开发环境时,会执行一个执行azure-functions-pack的脚本,并生成一个包含服务代码和所有必需的npm模块的包。然后,当向微服务发出请求时,它返回状态代码500,并且在日志中错误如下:
System.Exception : Error: Cannot find module "." at webpackMissingModule (D:\home\site\wwwroot\.funcpack\index.js:238044:68) at Object.<anonymous> (D:\home\site\wwwroot\.funcpack\index.js:238044:147) at __webpack_require__ (D:\home\site\wwwroot\.funcpack\index.js:21:30) ...
我只知道问题是azure-storage模块,因为如果我评论&#34; azureStorage = require(&#39; azure-storage&#39;);&#34; ,然后开始工作。我也尝试了npm模块fast-azure-storage没有成功,直到现在我还没能找到解决这个问题的方法。使用此模块的代码如下:
const blobSvc = azureStorage.createBlobService(storageConnectionString);
const writeStream = blobSvc.createWriteStreamToBlockBlob('containerName', fileName);
return new Promise(function (resolve) {
writeStream.write(svgString);
writeStream.on('close', () => {
resolve('https://' + storageAccount + '.blob.core.windows.net/containerName/' + fileName);
});
writeStream.end();
});
azure-storage的版本是2.6.0。谢谢你的帮助。
答案 0 :(得分:1)
不能直接回答您的问题 - 但您应该使用Azure功能的输出绑定功能来插入Blob,而不是使用库调用手动执行。
如果您这样做,则无需导入包,因此它也可以解决您的问题。
在docs中阅读有关输出绑定的更多信息,还有一个节点示例。
答案 1 :(得分:1)
实际上问题不在于azure-storage模块,而是由于某种原因导致其他模块出现问题的节点图表模块。删除节点图表后,所有模块都开始正常工作。