node.js - 从 Babel 6 迁移到 7 导出默认值未定义
问题描述
我的任务是将回购从 babel 6 迁移到 7。
通天塔 6 .babelrc
:
{
"presets": [ "es2015", "stage-3" ],
"plugins": [
"transform-runtime",
"transform-decorators-legacy",
"transform-object-rest-spread",
"transform-class-properties",
["module-resolver", {
"root": ["./src"]
}]
]
}
通天塔 7 .babelrc
:
{
"presets": [["@babel/preset-env", {
"targets": {
"node": "current"
}
}]],
"plugins": [
"@babel/plugin-transform-runtime",
"@babel/plugin-proposal-class-properties",
["module-resolver", {
"root": ["./src"]
}]
]
}
和:
"@babel/cli": "^7.4.3",
"@babel/core": "^7.4.3",
"@babel/node": "^7.2.2",
"@babel/preset-env": "^7.4.3",
"@babel/runtime": "^7.4.3",
"@babel/plugin-transform-runtime": "^7.4.3",
"@babel/plugin-proposal-class-properties": "^7.4.0",
有趣的是,当我nodemon --exec babel-node .
似乎大多数默认导出都是undefined
.
项目结构如下:
- src
- models
- controllers
- ...etc
./src/models/index.js
导入一堆模型,添加Sequelize
关系等,然后导出,例如:
// models/index.js
import ExampleModel from 'models/ExampleModel';
import OtherModel from 'models/OtherModel';
//...
ExampleModel.belongsTo(OtherModel, { as: 'other_model' });
// ...
export {
ExampleModel,
OtherModel
}
然后个别模型导入其他模型models/index.js
来设置自己:
// models/ExampleModel.js
import { OtherModel } from 'models';
const ExampleModel = db.define('ExampleModel', {
// ...
otherModelId: {
type: Sequelize.BIGINT,
references: { model: OtherModel, key: 'id' },
},
// ...
});
export default ExampleModel
OtherModel
设置非常相似:
const OtherModel = db.define('OtherModel', {
// ...
});
export default OtherModel;
ExampleModel
会抛出一个错误说:
/src/models/index.js:23
return _OtherModel.default;
^
TypeError: Cannot read property 'default' of undefined
at Object.get [as OtherModel] (src/models/index.js:23:24)
at Object.OtherModel (src/models/ExampleModel.js:82:28)
如果我只是进行常规导入,则import OtherModel from 'models/OtherModel';
一切正常。
是否有某种我缺少的插件可以让我像这样导出导入?我已经尝试了很多东西,但没有任何成功。
编辑:
如果我做 a import * as models from 'models'
in models/ExampleModel
,我会得到:
{
OtherModel: [Getter],
AnotherExportedModel: [Getter],
// ...etc
}
解决方案
推荐阅读
- python - 不明白这个“对象不可调用”错误
- html - SQL HTML 电子邮件列格式而不是行格式
- google-cloud-platform - 列出由特定 Google Cloud Platform API 管理的资源
- reactjs - 如果 redux 在刷新时丢失状态,为什么不在 localStorage 中维护状态?
- java - 无法应用 EventsAdapter 中的 EventsAdapter()
- xslt - 如何在不同的 XSL 模板中使用处理指令值?
- angular - 如何修复无法读取未定义的属性“exportDataAsCsv”
- java - 如何获得whenComplete和thenCompose的组合效果?
- pandoc - 如何使用 beamer 结构而不是块使 pandoc 生成标头
- c++ - async_read_until:缓冲区空间不足或队列已满