2013-01-16 12 views
3

나는 Azure & node.js 초보자입니다. node.js에서 아래 파일을 exec 파일로 보내려고했으나 blob.client.createContainerIfNotExists()에서 작동하지 않습니다.node.js azure storage blob

오류 표시 :

Error: createContainerIfNotExists 

그것은 단순히 createContainerIfNotExists() 디스플레이의 오류 경우를 의미한다.

blob.client.createContainerIfNotExists()을 쓰는 방법을 실수로했는지 또는 azure.createBlobService()을 쓸 수 없는지 궁금합니다.

node.js version v0.6.12 
express version 2.5.11 
azure version 0.5.3 

고마워요!

/**********************/ 
    File upload sample: 
/**********************/ 

var DEVSTORE_STORAGE_ACCOUNT = 'xxxxx'; 
var DEVSTORE_STORAGE_ACCESS_KEY= 'xxxx'; 
var DEVSTORE_BLOB_HOST = 'xxxxx'; 

var express = require('express') 
, routes = require('./routes'); 

var util = require('util'); 

// Azure module 
var azure = require('azure'); 
var blob = require('./blob.js'); 


// BLOB container 
blob.CONTAINER = 'nodejs'; 

// BLOB service 
blob.client = azure.createBlobService(
    DEVSTORE_STORAGE_ACCOUNT, 
    DEVSTORE_STORAGE_ACCESS_KEY, 
    DEVSTORE_BLOB_HOST); 

var app = module.exports = express.createServer(); 

// Configuration 

app.configure(function() { 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'ejs'); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    // app.use(express.logger()); 
    app.use(app.router); 
    app.use(express.static(__dirname + '/public')); 
}); 

app.configure('development', function(){ 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
}); 

app.configure('production', function(){ 
    app.use(express.errorHandler()); 
}); 

// Routes 

app.get('/', routes.index); 

// BLOB upload 
app.get('/upload', routes.upload); 

// BLOB upload 
app.post('/uploadtoblob', routes.uploadblob); 

// BLOB list 
app.get('/list', routes.listblobs); 

// BLOB delete 
app.post('/delete/:id', routes.deleteblob); 

// BLOB property 
app.get('/info/:id', routes.information); 

// BLOB container create 
blob.client.createContainerIfNotExists(blob.CONTAINER, function(err) { 
    if (err) { 
    console.log('Error : createContainerIfNotExists'); 
    process.exit(1); 
    } else { 

    blob.client.setContainerAcl(blob.CONTAINER,   azure.Constants.BlobConstants.BlobContainerPublicAccessType.BLOB, function(err) { 
     if(err) { 
    console.log('Error : setContainerAcl'); 
    process.exit(1); 
     } 
    }); 
    } 
}); 

var port = process.env.port || 3000; 
app.listen(port, function(){ 
    console.log("Express server listening on port %d in %s mode", app.address().port,  app.settings.env); 
}); 
+1

그것은의 상세를 피들러 같은 도구를 통해 요청/응답을 추적하거나 로깅 가치가있다 실제 오류. 그러면 요청이 실패한 이유를 정확하게 알 수 있습니다. 여러 가지 이유로 실패 할 수 있습니다 - 잘못된 컨테이너 이름, 유효하지 않은 자격증 명 등. –

+0

의견을 보내 주셔서 감사합니다! 나는 그것을 시도 할 것이다. – otogen

+0

또한 console.log에 더 많은 데이터를 인쇄 해보십시오 (예를 들어 실제로 발생한 오류를 oiutputting). 이것은 단순히 나쁜 신용 정보 일 수는 있지만 더 많은 정보없이 오류를 디버깅하는 것은 불가능합니다. –

답변

3

노드에 대한 최신 azurekdk는 노드 버전> 0.6.l5가 필요합니다. sdk와 노드 버전을 모두 업그레이드 할 것을 제안합니다.

특정 오류에 대한 자세한 정보를 얻으려면 다음과 같이 코드를 변경할 수 있습니다

을 console.log ('오류 : createContainerIfNotExists'+ JSON.stringify을 (ERR));

하늘색 저장소 에뮬레이터를 로컬로 실행하려면 또는을 사용해야합니다. 응용 프로그램에서 사용할 수있는 하늘색 저장소 계정에 대한 자격 증명을 제공해야합니다. 이 작업은 대개 AZURE_STORAGE_ACCOUNT 및 AZURE_STORAGE_ACCESS_KEY 환경 변수를 통해 수행되거나 연결 문자열을 createBlobService 팩토리에 전달하여 수행됩니다.

BLOB 저장소의 첫 번째 애플리케이션을 설정 단계별 시료 용

참조 :

http://www.windowsazure.com/en-us/develop/nodejs/how-to-guides/blob-storage/

+0

답변 해 주셔서 감사합니다. 문제는 전적으로 노드 버전이었습니다. – otogen

관련 문제