我正在尝试使用mongoose连接到mongodb atlas集群。当我运行我的应用程序时,在一长串垃圾输出之后,我得到以下错误。
/path/node_modules/mongodb/lib/collection.js:74
pkFactory: db.options?.pkFactory ?? utils_1.DEFAULT_PK_FACTORY,
^
SyntaxError: Invalid or unexpected token
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
我发现根本原因是:import mongoose from 'mongoose'
。我的代码运行时没有它,但一旦我导入我得到这个错误。我甚至还没有在代码的其他地方使用mongoose。
我遇到了这个post,它涵盖了同样的问题,但唯一的解决方案是将mongoose降级到版本6.7.3。
我确定从mongoose 6.x到7.x的更改破坏了我的代码。此外,我认为实际的突破是从mongodb 4.x到5.x。我查看了更改的注解,但我不确定我怎么会导入错误。我的node版本是16.17.0,npm版本是8.15.0,安装的mongodb版本是5.6.0。我的文本编码是UTF-8。
1条答案
按热度按时间s6fujrry1#
我想我已经破解了!我的启动脚本是“node -r esm app.js”,它应该允许ECMAScript模块在本地运行。对于以后版本的mongodb似乎存在一些兼容性问题。
要解决:
首先,从start命令中删除-resm。接下来,或者:
1.将你的.js扩展名改为.mjs(差异解释here)
1.添加“类型”:“module”到你的package.json
两者应具有相同的效果。