使用Nodejs创建数据库ArangoDB时发生ECONNREFUSED错误



我正在ArangoDB网站上学习本教程。这是关于使用node.js创建Arango数据库。我在OSX.上做这件事

在节点代码中执行后:

    > 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.1rncontent-type: application/jsonrncontent-length: 15rnx-arango-version: 20300rnHost: 127.0.0.1:8529rnConnection: keep-alivernrn',
     _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开始的材料。

错误表示客户端无法连接,可能是ArangoDB没有在localhost上的8529端口运行,没有启动或没有完成启动。

本教程应该在节点外壳中使用,但您可能必须避免换行(例如,在调用类似.then的方法时,在.之前)。示例中的代码已被格式化为可读性,如果您希望后续内容,屏幕截图可能会更安全。

通常,如果您有多行代码需要使用node运行,则最好创建一个JavaScript文件,其中包含所有要运行的代码,如script.js。要运行该代码,请使用node script.js。这将导致节点逐行评估代码,并(可能)持久地保持代码运行代码(像服务器这样的事情会这样做)。

使用nodeshell(也就是直接运行node)对于持久运行代码来说不是一个好策略。

因此,最后:将任何服务器代码放在script.js中,然后在bash shell(安装节点的地方)中使用命令node script.js运行它。

代码很可能不会启动服务器,并且在外壳内持续使用端口。

最新更新