2017-11-01 14 views
0

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입니다. 어떤 도움을 주셔서 감사합니다.

답변

1

질문에 대한 직접적인 대답은 아니지만 Azure Function의 출력 바인딩 기능을 사용하여 라이브러리 호출로 수동으로 수행하는 대신 Blob을 삽입해야합니다.

이렇게하면 패키지를 가져올 필요가 없으므로 문제가 해결됩니다.

출력 바인딩에 대한 자세한 내용은 docs에 나와 있습니다. 노드 예제도 있습니다.

+0

안녕하세요 미하일입니다. 감사드립니다. 당신이 제안한 해결책이 해결책의 일부일 수도 있고, 나는 그 변화를했지만, 지금 funcpack은 약간의 오류를 일으키는 몇몇 변수의 유형을 바꾸는 것처럼 보입니다. 이것은 funcpack을 사용하는 마이크로 서비스가 많아 모든 것이 잘 작동하기 때문에 이상합니다. 이 경우에는 문제가 발생하지만 해결을 위해 노력하고 있습니다. 해결책을 찾으면 여기에 게시 할 것입니다. –

+0

제안 해 주신 Mikhail에게 감사드립니다. 불행히도 우리의 경우, blob 저장소 바인딩은 서비스가 완료되기 전에 Blob의 이름을 사용자에게 보내야하고 blob 이름은 서비스가 완료된 후에 만 ​​생성되어야하기 때문에 최상의 선택으로 보이지 않습니다. C#의 경우 코드에서 변수를 blob 이름에 바인딩 할 수 있습니다.이 경우 좋은 해결책이됩니다. 불행하게도 Node.js에서는 불가능한 것 같습니다. –

1

실제로 문제는 하늘색 저장 모듈이 아니라 노드 챠 스스트 모듈이 다른 모듈에서도 문제를 일으키고 있다는 것입니다. node-chartist를 제거한 후 모든 모듈이 완벽하게 작동하기 시작했습니다.