我正在编写一个带有nodejs/express/sequelize的新应用程序。我使用Babel 7来编译我的ES6。到目前为止,一切正常,除非我想使用 removehook 方法,否则一切正常。当我在实例上使用RemoveHook时,我会遇到此错误。
/home/xxxx/PhpstormProjects/some-project/node_modules/lodas/lodash.js:15709
var result = object(this.__wrapped__),
^
TypeError: Class constructor Model cannot be invoked without 'new'
at self.object.(anonymous function) [as removeHook] (/home/xxxx/PhpstormProjects/some-project/node_modules/lodash/lodash.js:15709:28)
at removeHook (/home/xxxx/PhpstormProjects/some-project/src/controllers/user.js:44:22)
at callback (/home/xxxx/PhpstormProjects/some-project/src/util/loginStrategy.js:9:18)
我知道这个问题来自Babel。起初我在使用babel六,但是我遇到了同样的问题。我尝试了GitHub上的所有可用内容,最好的解决方案是以下.babelrc,但我仍然遇到同样的错误。另外,我已经升级了Lodash,无效。我尝试了 babel-plugin-lodash 没有结果。
.babelrc
{
"plugins": ["lodash"],
"presets": [
["@babel/env", {
"targets": {
"node": "10.16.0"
}
}]
]
}
package.json
{
"name": "xxxxxxxxxxx",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "sessionSecret=lool nodemon ./app.js --exec babel-node -e js"
},
"dependencies": {
"bcrypt": "^3.0.6",
"body-parser": "^1.19.0",
"connect-pg-simple": "^5.0.0",
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
"express": "~4.16.1",
"express-session": "^1.16.2",
"fs": "0.0.1-security",
"lodash": "^4.17.11",
"lodash-es": "^4.17.11",
"nodemon": "^1.19.1",
"pg": "^7.11.0",
"sequelize": "^5.8.12",
"sequelize-cli": "^5.5.0",
"uuid": "^3.3.2"
},
"devDependencies": {
"@babel/cli": "^7.4.4",
"@babel/core": "^7.4.5",
"@babel/node": "^7.4.5",
"@babel/plugin-proposal-class-properties": "^7.4.4",
"@babel/plugin-transform-classes": "^7.4.4",
"@babel/plugin-transform-runtime": "^7.4.4",
"@babel/preset-env": "^7.4.5",
"babel-eslint": "^10.0.2",
"babel-plugin-lodash": "^3.3.4",
"babel-preset-latest-node": "^3.2.1",
"eslint": "^5.16.0",
"eslint-config-airbnb-base": "^13.1.0",
"eslint-plugin-import": "^2.18.0"
}
}
节点版本
v10.16.0
我已经看到了其他答案,但是他们没有解决我的问题。他们中的大多数真的很老。请让我知道您是否需要更多信息。
我解决了自己的问题。事实证明,我不能在实例上使用RemoveHook。我应该使用模型。这是续集文档的一个大问题。这是我发现的。
实例和类方法已于V4删除。请参阅此处(是404( 另外,您的update挂钩会异步更新用户。您应该返回诺言,以便续集知道它必须等待您的钩子完成任务并更新用户。