Node.js를 사용하여 Azure 기능 마이크로 서비스를 만들었으며 npm 모듈 azure-storage를 사용하여 Blob 저장소에 파일을 삽입합니다.azure-storage가 웹 팩 (azure-function-pack) 서버 쪽에서 작동하지 않습니다.
로컬에서는 정상적으로 작동하지만 개발 환경에 배포 할 때 azure-function-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) ...
내가하는 문제가 푸른 저장 모듈 때문에 것을 알고 내가 "azureStorage = require ('azure-storage');"라고 말하면, , 그 다음 일을 시작하십시오. 나는 또한 성공없이 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입니다. 어떤 도움을 주셔서 감사합니다.
안녕하세요 미하일입니다. 감사드립니다. 당신이 제안한 해결책이 해결책의 일부일 수도 있고, 나는 그 변화를했지만, 지금 funcpack은 약간의 오류를 일으키는 몇몇 변수의 유형을 바꾸는 것처럼 보입니다. 이것은 funcpack을 사용하는 마이크로 서비스가 많아 모든 것이 잘 작동하기 때문에 이상합니다. 이 경우에는 문제가 발생하지만 해결을 위해 노력하고 있습니다. 해결책을 찾으면 여기에 게시 할 것입니다. –
제안 해 주신 Mikhail에게 감사드립니다. 불행히도 우리의 경우, blob 저장소 바인딩은 서비스가 완료되기 전에 Blob의 이름을 사용자에게 보내야하고 blob 이름은 서비스가 완료된 후에 만 생성되어야하기 때문에 최상의 선택으로 보이지 않습니다. C#의 경우 코드에서 변수를 blob 이름에 바인딩 할 수 있습니다.이 경우 좋은 해결책이됩니다. 불행하게도 Node.js에서는 불가능한 것 같습니다. –