导入mongoose 7.3.0时出现“无效或意外令牌”错误

kognpnkq  于 2023-06-23  发布在  Go
关注(0)|答案(1)|浏览(109)

我正在尝试使用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。

s6fujrry

s6fujrry1#

我想我已经破解了!我的启动脚本是“node -r esm app.js”,它应该允许ECMAScript模块在本地运行。对于以后版本的mongodb似乎存在一些兼容性问题。
要解决:
首先,从start命令中删除-resm。接下来,或者:
1.将你的.js扩展名改为.mjs(差异解释here
1.添加“类型”:“module”到你的package.json
两者应具有相同的效果。

相关问题