2016-05-04 65 views
0

我正在關注來自ArangoDB.com的this tutorial。 這是關於使用node.js創建Arango數據庫的。我這樣做在OS X使用Nodejs創建數據庫ArangoDB時發生ECONNREFUSED錯誤

在節點代碼執行後:

> Database = require('arangojs').Database; 
     [Function: Database] 
    > db = new Database('http://127.0.0.1:8529'); 
     Database { 
    _connection: 
    Connection { 
    config: 
     { url: 'http://127.0.0.1:8529', 
     databaseName: '_system', 
     arangoVersion: 20300, 
     agentOptions: [Object], 
     headers: [Object] }, 
    _request: [Function: request], 
    promisify: [Function] }, 
    _api: 
    Route { 
    _connection: 
     Connection { 
     config: [Object], 
     _request: [Function: request], 
     promisify: [Function] }, 
    _path: '_api', 
    _headers: undefined }, 
    name: '_system' } 

    > db.createDatabase('mydb', function (err) { 
     if (!err) console.log('Database created'); 
     else console.error('Failed to create database:', err); 
    }); 

我收到ECONNREFUSED錯誤:

Failed to create database: { [Error: connect ECONNREFUSED 127.0.0.1:8529] 
    code: 'ECONNREFUSED', 
    errno: 'ECONNREFUSED', 
    syscall: 'connect', 
    address: '127.0.0.1', 
    port: 8529, 
    request: 
    ClientRequest { 
    domain: 
     Domain { 
     domain: null, 
     _events: [Object], 
     _eventsCount: 1, 
     _maxListeners: undefined, 
     members: [] }, 
    _events: { response: [Object], error: [Function] }, 
    _eventsCount: 2, 
    _maxListeners: undefined, 
    output: [], 
    outputEncodings: [], 
    outputCallbacks: [], 
    outputSize: 0, 
    writable: true, 
    _last: false, 
    chunkedEncoding: false, 
    shouldKeepAlive: true, 
    useChunkedEncodingByDefault: true, 
    sendDate: false, 
    _removedHeader: { 'content-length': false }, 
    _contentLength: null, 
    _hasBody: true, 
    _trailer: '', 
    finished: true, 
    _headerSent: true, 
    socket: 
     Socket { 
     _connecting: false, 
     _hadError: false, 
     _handle: null, 
     _parent: null, 
     _host: null, 
     _readableState: [Object], 
     readable: false, 
     domain: [Object], 
     _events: [Object], 
     _eventsCount: 10, 
     _maxListeners: undefined, 
     _writableState: [Object], 
     writable: false, 
     allowHalfOpen: false, 
     destroyed: true, 
     bytesRead: 0, 
     _bytesDispatched: 0, 
     _sockname: null, 
     _pendingData: [Object], 
     _pendingEncoding: '', 
     server: null, 
     _server: null, 
     parser: [Object], 
     _httpMessage: [Circular], 
     read: [Function], 
     _consuming: true, 
     _idleNext: null, 
     _idlePrev: null, 
     _idleTimeout: -1 }, 
    connection: 
     Socket { 
     _connecting: false, 
     _hadError: false, 
     _handle: null, 
     _parent: null, 
     _host: null, 
     _readableState: [Object], 
     readable: false, 
     domain: [Object], 
     _events: [Object], 
     _eventsCount: 10, 
     _maxListeners: undefined, 
     _writableState: [Object], 
     writable: false, 
     allowHalfOpen: false, 
     destroyed: true, 
     bytesRead: 0, 
     _bytesDispatched: 0, 
     _sockname: null, 
     _pendingData: [Object], 
     _pendingEncoding: '', 
     server: null, 
     _server: null, 
     parser: [Object], 
     _httpMessage: [Circular], 
     read: [Function], 
     _consuming: true, 
     _idleNext: null, 
     _idlePrev: null, 
     _idleTimeout: -1 }, 
    _header: 'POST /_db/_system/_api/database HTTP/1.1\r\ncontent-type: application/json\r\ncontent-length: 15\r\nx-arango-version: 20300\r\nHost: 127.0.0.1:8529\r\nConnection: keep-alive\r\n\r\n', 
    _headers: 
     { 'content-type': 'application/json', 
     'content-length': 15, 
     'x-arango-version': 20300, 
     host: '127.0.0.1:8529' }, 
    _headerNames: 
     { 'content-type': 'content-type', 
     'content-length': 'content-length', 
     'x-arango-version': 'x-arango-version', 
     host: 'Host' }, 
    _onPendingData: null, 
    agent: 
     Agent { 
     domain: [Object], 
     _events: [Object], 
     _eventsCount: 1, 
     _maxListeners: undefined, 
     defaultPort: 80, 
     protocol: 'http:', 
     options: [Object], 
     requests: {}, 
     sockets: [Object], 
     freeSockets: {}, 
     keepAliveMsecs: 1000, 
     keepAlive: true, 
     maxSockets: 3, 
     maxFreeSockets: 256 }, 
    socketPath: undefined, 
    method: 'POST', 
    path: '/_db/_system/_api/database', 
    parser: 
     HTTPParser { 
     '0': [Function: parserOnHeaders], 
     '1': [Function: parserOnHeadersComplete], 
     '2': [Function: parserOnBody], 
     '3': [Function: parserOnMessageComplete], 
     '4': null, 
     _headers: [], 
     _url: '', 
     _consumed: false, 
     socket: [Object], 
     incoming: null, 
     outgoing: [Circular], 
     maxHeaderPairs: 2000, 
     onIncoming: [Function: parserOnIncomingClient] } } } 

可惜我不能本地化錯誤。我正在尋找類似的問題,但沒有找到任何解決方案。我對這些技術沒有太多的經驗,現在我只是開始使用ArangoDB。

我將不勝感激任何提示如何解決它和/或任何其他材料如何開始與ArangoDB。

+1

您是否嘗試運行所有作爲節點文件複製粘貼該代碼到server.js然後做節點server.js – Zargold

+0

謝謝,我現在chcecked它,它的工作就像它應該有。 –

回答

2

一般來說,如果你有多個代碼行,你需要使用節點,最好創建一個包含所有要作爲script.js運行這樣的代碼的JavaScript文件來運行。要運行該代碼,請使用node script.js。這將導致節點逐行評估你的代碼,並且(可能)持久地保持代碼運行代碼(像服務器這樣做)。

使用節點shell(也就是直接運行node)不會是持久運行代碼的好策略。

所以最後:將任何服務器代碼放入script.js,然後在bash shell(安裝節點的位置)內使用命令node script.js運行它。

它很可能不會啓動服務器,並且在shell內部持久地消耗一個端口。

2

錯誤表明客戶端無法連接,據推測ArangoDB未在本地主機上的端口8529上運行,尚未啓動或尚未完成啓動。

本教程應該從節點外殼工作,但您可能必須避免換行符(例如,在撥打.then時調用.之前)。爲了便於閱讀,示例中的代碼已被格式化,如果您想要遵循某些內容,屏幕截圖可能會更安全。

+0

我認爲問題可能在未運行(還)服務器。後來它開始工作沒有問題。 –