Node.js 在另一台计算机上运行的代码出错

Node.js 在另一台计算机上运行的代码出错,node.js,mongodb,Node.js,Mongodb,我真的不确定发生了什么事。当我运行“node./controllers/db.controller.js”时,我遇到以下错误 1) (...).then(...).catch is not a function 2) TypeError: resolve is not a function 如果我注释掉db.controller中的.catch,并将findDocuments中的resolve更改为Promise.resolve,则文件运行正常。但是,我们需要.catch,以防数据库出现问

我真的不确定发生了什么事。当我运行“node./controllers/db.controller.js”时,我遇到以下错误

1) (...).then(...).catch is not a function 

2) TypeError: resolve is not a function
如果我注释掉db.controller中的.catch,并将findDocuments中的resolve更改为Promise.resolve,则文件运行正常。但是,我们需要.catch,以防数据库出现问题

这段代码对我的朋友来说很好用。我已经完成了npm安装,卸载和重新安装了nodejs,删除和重新安装了节点模块,并移动了代码。除此之外,我不完全确定如何解决这个问题。从我们可以看出,当我们运行“node ls”时,我们有相同的包,但也有不在其中的包

//===========================
// Import Libraries
//===========================

const assert = require('assert')
const Promise = require('promise')

//===========================
// Find Documents
//===========================
const findDocuments = function(db, collectionName, key, filterTerm) {         
  // Get the documents collection
  return new Promise ((resolve, reject) => {
    const collection = db.collection(collectionName)
    let filter = {};
    filter[key] = filterTerm;
    console.log(filter)
    switch (collectionName) {
      case "api_keys":
        collection.find(filter).toArray((error, docs)  => {
          if (error) reject (error)
          console.log('find documents test 0')
          assert.equal(error, null)
          console.log("Found the following records")
          resolve(docs)
        })
      break
      case "orders":
        collection.find({tradeId:field}).toArray((error, docs)  => {
          if (error) reject (error)
          assert.equal(error, null)
          console.log("Found the following records")
          resolve(docs)
        })
      break
      default: console.log('Insert Document Default Test')
    }
  })
}

module.exports = findDocuments
将promise语句更改为const promise=require('promise'),并将两个文件中的所有小写promise更新为promise。我现在有一个differentish错误作为它的dbcontroller,而不是find documents

新错误:

PS P:\GitHub\arkadbot> node .\controllers\db.controller.js
(node:22940) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.
Connected successfully to server
{ user_id: 111 }
P:\GitHub\arkadbot\node_modules\mongodb\lib\topologies\server.js:301
          throw err;
          ^

TypeError: dbController(...).then(...).catch is not a function
    at P:\GitHub\arkadbot\controllers\db.controller.js:142:10
    at P:\GitHub\arkadbot\node_modules\mongodb\lib\utils.js:410:17
    at executeCallback (P:\GitHub\arkadbot\node_modules\mongodb\lib\utils.js:402:9)
    at P:\GitHub\arkadbot\node_modules\mongodb\lib\operations\mongo_client_ops.js:286:5
    at connectCallback (P:\GitHub\arkadbot\node_modules\mongodb\lib\operations\mongo_client_ops.js:265:5)
    at P:\GitHub\arkadbot\node_modules\mongodb\lib\operations\mongo_client_ops.js:379:5
    at Server.connectHandler (P:\GitHub\arkadbot\node_modules\mongodb\lib\topologies\server.js:298:9)
    at Object.onceWrapper (events.js:291:20)
    at Server.emit (events.js:203:13)
    at Pool.<anonymous> (P:\GitHub\arkadbot\node_modules\mongodb-core\lib\topologies\server.js:377:12)
PS P:\GitHub\arkadbot>
PS P:\GitHub\arkadbot>节点。\controllers\db.controller.js
(节点:22940)弃用警告:当前URL字符串解析器已弃用,将在未来版本中删除。要使用新的解析器,请将选项{useNewUrlParser:true}传递给MongoClient.connect。
已成功连接到服务器
{user_id:111}
P:\GitHub\arkadbot\node\u modules\mongodb\lib\topologies\server.js:301
犯错误;
^
TypeError:dbController(…)。然后(…)。catch不是函数
在P:\GitHub\arkadbot\controllers\db.controller.js:142:10
在P:\GitHub\arkadbot\node\u modules\mongodb\lib\utils.js:410:17
在executeCallback(P:\GitHub\arkadbot\node\u modules\mongodb\lib\utils.js:402:9)
在P:\GitHub\arkadbot\node\u modules\mongodb\lib\operations\mongo\u client\u ops.js:286:5
在connectCallback(P:\GitHub\arkadbot\node\u modules\mongodb\lib\operations\mongo\u client\u ops.js:265:5)
在P:\GitHub\arkadbot\node\u modules\mongodb\lib\operations\mongo\u client\u ops.js:379:5
在Server.connectHandler(P:\GitHub\arkadbot\node\u modules\mongodb\lib\topologies\Server.js:298:9)
在Object.onceWrapper(events.js:291:20)
在Server.emit(events.js:203:13)
在游泳池。(P:\GitHub\arkadbot\node\u modules\mongodb core\lib\topologies\server.js:377:12)
PS P:\GitHub\arkadbot>
问题已解决!解决方案: 使用本机Promise并删除const Promise/Promise=require('Promise')语句修复了错误


谢谢大家的帮助

在第二个列表中,您导入
promise
并随后使用
promise
在第二个列表中,您导入
promise
并随后使用
promise
如果您使用的是node.js的任何现代版本,则承诺是内置的。因此,没有必要这样做:

const promise = require('promise')
除非您特别尝试使用不同于node.js内置的promise库。而且,如果您试图做到这一点,那么您应该始终如一地使用它,您的一些代码使用
promise
,一些代码使用
promise
,这将两者混合使用


因此,我建议去掉
const promise=require('promise')
,并在任何地方使用内置的
promise
(注意,您必须在代码中将
promise
更改为
promise
,以正确引用内置的promise库)。

如果您使用的是node.js的任何现代版本,承诺是内在的。因此,没有必要这样做:

const promise = require('promise')
除非您特别尝试使用不同于node.js内置的promise库。而且,如果您试图做到这一点,那么您应该始终如一地使用它,您的一些代码使用
promise
,一些代码使用
promise
,这将两者混合使用


因此,我建议去掉
const promise=require('promise')
,并在任何地方使用内置的
promise
(注意,您必须在代码中将
promise
更改为
promise
,以正确引用内置的promise库).

最好提供节点版本和完整的堆栈跟踪,以帮助其他人发现问题。请确定,您是否使用相同的构建过程,即相同的
package.json
文件和命令?当错误使用es6代码、babel和webpack等时,我遇到过类似的问题。这是什么:
const promise=require('promise')
?您不使用内置的
承诺
有什么原因吗?另外,两个安装中的node.js版本是什么?将使用完整的堆栈跟踪更新,node版本是,所有内容都与package.json相同。当我做npm时,一切似乎都安装得很好install@jfriend00哇,谢谢你!老实说,我没有意识到我不需要承诺。不确定我为什么/如何做const promise=require(“promise”)。摆脱它似乎解决了错误!如果你把它作为一个答案,我会接受。最好是你提供节点版本和完整的堆栈跟踪,以帮助其他人发现问题。请确定,你使用的是相同的构建过程,即相同的
package.json
文件和命令吗?当错误使用es6代码、babel和webpack等时,我遇到过类似的问题。这是什么:
const promise=require('promise')
?您不使用内置的
承诺
有什么原因吗?另外,两个安装中的node.js版本是什么?将使用完整的堆栈跟踪更新,node版本是,所有内容都与package.json相同。当我做npm时,一切似乎都安装得很好install@jfriend00哇,谢谢你!老实说,我没有意识到我不需要承诺。不确定我为什么/如何做const promise=require(“promise”)。摆脱它似乎解决了错误!如果你把它作为一个答案,我会接受它。你看到的是哪一行,我觉得我在db.controllerah的任何地方都看不到承诺。老实说,我没有想到这一点。所以我应该做const Promise=require(‘Promise’)inst
PS P:\GitHub\arkadbot> node .\controllers\db.controller.js
(node:22940) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.
Connected successfully to server
{ user_id: 111 }
P:\GitHub\arkadbot\node_modules\mongodb\lib\topologies\server.js:301
          throw err;
          ^

TypeError: dbController(...).then(...).catch is not a function
    at P:\GitHub\arkadbot\controllers\db.controller.js:142:10
    at P:\GitHub\arkadbot\node_modules\mongodb\lib\utils.js:410:17
    at executeCallback (P:\GitHub\arkadbot\node_modules\mongodb\lib\utils.js:402:9)
    at P:\GitHub\arkadbot\node_modules\mongodb\lib\operations\mongo_client_ops.js:286:5
    at connectCallback (P:\GitHub\arkadbot\node_modules\mongodb\lib\operations\mongo_client_ops.js:265:5)
    at P:\GitHub\arkadbot\node_modules\mongodb\lib\operations\mongo_client_ops.js:379:5
    at Server.connectHandler (P:\GitHub\arkadbot\node_modules\mongodb\lib\topologies\server.js:298:9)
    at Object.onceWrapper (events.js:291:20)
    at Server.emit (events.js:203:13)
    at Pool.<anonymous> (P:\GitHub\arkadbot\node_modules\mongodb-core\lib\topologies\server.js:377:12)
PS P:\GitHub\arkadbot>
const promise = require('promise')