Мне было поручено перенести репо с Вавилона 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';
, все работает отлично.
Есть ли какой-нибудь плагин, который мне не хватает, который позволит мне экспортировать импорт, как этот?Я перепробовал кучу вещей, и у меня не было никакого успеха.
РЕДАКТИРОВАТЬ:
Если я сделаю import * as models from 'models'
в models/ExampleModel
, я получу:
{
OtherModel: [Getter],
AnotherExportedModel: [Getter],
// ...etc
}