You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GridDB NodeJS Connector版本错误:需更新npm/nvm/griddb_node?

GridDB NodeJS Connector版本错误排查与更新方案

问题描述

执行命令node MethaneCode.js 239.0.0.1 31999 defaultCluster admin admin时触发版本错误,已尝试npm文档指定的Node.js 10.16.0和10.16.3版本,问题仍未解决。需要明确是否需要更新npm、nvm或griddb_node,并获取对应的更新命令。

参考代码

var griddb = require('griddb-node-api');

const createCsvWriter = require('csv-writer').createObjectCsvWriter;
const csvWriter = createCsvWriter({
  path: 'out.csv',
  header: [
    {id: "Country", title:"Country"}, 
    {id: "Sector", title:"Sector"}, 
    {id: "Gas", title:"Gas"}, 
    {id: "Unit", title:"Unit"}, 
    {id: "2018", title:"2018"}, 
    {id: "2017", title:"2017"}, 
    {id: "2016", title:"2016"},  
    {id: "2015", title:"2015"},  
    {id: "2014", title:"2014"}, 
    {id: "2013", title:"2013"},
    {id: "2012", title:"2012"},  
    {id: "2011", title:"2011"}, 
    {id: "2010", title:"2010"}, 
    {id: "2009", title:"2009"}, 
    {id: "2008", title:"2008"},
    {id: "2007", title:"2007"},
    {id: "2006", title:"2006"},
    {id: "2005", title:"2005"},
    {id: "2004", title:"2004"},
    {id: "2003", title:"2003"},
    {id: "2002", title:"2002"},
    {id: "2001", title:"2001"},
    {id: "2000", title:"2000"},
    {id: "1999", title:"1999"},
    {id: "1998", title:"1998"},
    {id: "1997", title:"1997"},
    {id: "1996", title:"1996"},
    {id: "1995", title:"1995"},
    {id: "1994", title:"1994"},
    {id: "1993", title:"1993"},
    {id: "1992", title:"1992"},
    {id: "1991", title:"1991"},
    {id: "1990", title:"1990"},
  ]
});

const factory = griddb.StoreFactory.getInstance();
const store = factory.getStore({
    "host": '239.0.0.1',
    "port": 31999,
    "clusterName": "defaultCluster",
    "username": "admin",
    "password": "admin"
});

// For connecting to the GridDB Server we have to make containers and specify the schema.
const conInfo = new griddb.ContainerInfo({
    'name': "methaneanalysis",
    'columnInfoList': [
      ["name", griddb.Type.STRING],
      ["Country", griddb.Type.STRING],
        ["Sector", griddb.Type.STRING],
        ["Gas", griddb.Type.STRING],
        ["Unit", griddb.Type.STRING],
        ["2018", griddb.Type.DOUBLE],
        ["2017", griddb.Type.DOUBLE],
        ["2016", griddb.Type.DOUBLE],
        ["2015", griddb.Type.DOUBLE],
        ["2014", griddb.Type.DOUBLE],
        ["2013", griddb.Type.DOUBLE],
        ["2012", griddb.Type.DOUBLE],
        ["2011", griddb.Type.DOUBLE],
        ["2010", griddb.Type.DOUBLE],
        ["2009", griddb.Type.DOUBLE],
        ["2008", griddb.Type.DOUBLE],
        ["2007", griddb.Type.DOUBLE],
        ["2006", griddb.Type.DOUBLE],
        ["2005", griddb.Type.DOUBLE],
        ["2004", griddb.Type.DOUBLE],
        ["2003", griddb.Type.DOUBLE],
        ["2002", griddb.Type.DOUBLE],
        ["2001", griddb.Type.DOUBLE],
        ["2000", griddb.Type.DOUBLE],
        ["1999", griddb.Type.DOUBLE],
        ["1998", griddb.Type.DOUBLE],
        ["1997", griddb.Type.DOUBLE],
        ["1996", griddb.Type.DOUBLE],
        ["1995", griddb.Type.DOUBLE],
        ["1994", griddb.Type.DOUBLE],
        ["1993", griddb.Type.DOUBLE],
        ["1992", griddb.Type.DOUBLE],
        ["1991", griddb.Type.DOUBLE],
        ["1990", griddb.Type.DOUBLE]
    ],
    'type': griddb.ContainerType.COLLECTION, 'rowKey': true
});


// ////////////////////////////////////////////


const csv = require('csv-parser');

const fs = require('fs');
var lst = []
var lst2 = []
var i =0;
fs.createReadStream('./Dataset/methane_hist_emissions.csv')
  .pipe(csv())
  .on('data', (row) => {
    lst.push(row);
    console.log(lst);

  })
  .on('end', () => {
    var container;
    var idx = 0;
    
    for(let i=0;i<lst.length;i++){


    store.putContainer(conInfo, false)
        .then(cont => {
            container = cont;
            return container.createIndex({ 'columnName': 'name', 'indexType': griddb.IndexType.DEFAULT });
        })
        .then(() => {
            idx++;
            container.setAutoCommit(false);
            return container.put([String(idx), lst[i]['Country'],lst[i]["Sector"],lst[i]["Gas"],lst[i]["Unit"],lst[i]["2018"],lst[i]["2017"],lst[i]["2016"],lst[i]["2015"],lst[i]["2014"],lst[i]["2013"],lst[i]["2012"],lst[i]["2011"],lst[i]["2010"],lst[i]["2009"],lst[i]["2008"],lst[i]["2007"],lst[i]["2006"],lst[i]["2005"],lst[i]["2004"],lst[i]["2003"],lst[i]["2002"],lst[i]["2001"],lst[i]["2000"],lst[i]["1999"],lst[i]["1998"],lst[i]["1997"],lst[i]["1996"],lst[i]["1995"],lst[i]["1994"],lst[i]["1993"],lst[i]["1992"],lst[i]["1991"],lst[i]["1990"]]);
        })
        .then(() => {
            return container.commit();
        })
       
        .catch(err => {
            if (err.constructor.name == "GSException") {
                for (var i = 0; i < err.getErrorStackSize(); i++) {
                    console.log("[", i, "]");
                    console.log(err.getErrorCode(i));
                    console.log(err.getMessage(i));
                }
            } else {
                console.log(err);
            }
        });
    
    }

    store.getContainer("methaneanalysis")
    .then(ts => {
        container = ts;
      query = container.query("select *")
      return query.fetch();
  })
  .then(rs => {
      while (rs.hasNext()) {


          let rsNext = rs.next()

          lst2.push(
            
            
            {
                'Country': rsNext[1],
                "Sector": rsNext[2],
                "Gas": rsNext[3],
                "Unit": rsNext[4],
                "2018": rsNext[5],
                "2017": rsNext[6],
                "2016": rsNext[7],
                "2015": rsNext[8],
                "2014": rsNext[9],
                "2013": rsNext[10],
                "2012": rsNext[11],
                "2011": rsNext[12],
                "2010": rsNext[13],
                "2009": rsNext[14],
                "2008": rsNext[15],
                "2007": rsNext[16],
                "2006": rsNext[17],
                "2005": rsNext[18],
                "2004": rsNext[19],
                "2003": rsNext[20],
                "2002": rsNext[21],
                "2001": rsNext[22],
                "2000": rsNext[23],
                "1999": rsNext[24],
                "1998": rsNext[25],
                "1997": rsNext[26],
                "1996": rsNext[27],
                "1995": rsNext[28],
                "1994": rsNext[29],
                "1993": rsNext[30],
                "1992": rsNext[31],
                "1991": rsNext[32],
                "1990": rsNext[33],
                
            }
            
          );
          
      }

        csvWriter
        .writeRecords(lst2)
        .then(()=> console.log('The CSV file was written successfully'));

      return 
  }).catch(err => {
      if (err.constructor.name == "GSException") {
          for (var i = 0; i < err.getErrorStackSize(); i++) {
              console.log("[", i, "]");
              console.log(err.getErrorCode(i));
              console.log(err.getMessage(i));
          }
      } else {
          console.log(err);
      }
  });   
  
  });

解决方案

1. 优先更新griddb-node-api

版本不兼容问题大概率源于Connector与Node.js版本不匹配,先更新到适配Node.js 10.x的最新兼容版本:

npm install griddb-node-api@latest --save

若需指定适配版本,可查看官方版本说明后安装对应版本,例如:

npm install griddb-node-api@4.6.0 --save

2. 更新npm

确保npm版本与Node.js 10.x兼容,Node.js 10.x对应的推荐npm版本为6.x系列,更新命令:

npm install -g npm@6.x

3. 更新nvm(若使用nvm管理Node.js)

如果通过nvm安装Node.js,更新nvm可提升版本管理稳定性:

  • Linux/macOS:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
  • Windows:下载最新版本安装包覆盖原安装即可

额外排查建议

  • 执行npm ls griddb-node-api确认当前Connector版本,检查是否与Node.js 10.x兼容
  • 清理npm缓存后重新安装依赖:npm cache clean --force
  • 确认GridDB服务器版本与Connector版本匹配,避免跨版本不兼容

内容的提问来源于stack exchange,提问作者Ismail Vohra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:55:28