Node.js Sequelize无法与@babel/register一起使用
我试图在sequelize迁移中使用import-export语句,在其他问题和github问题中尝试了所有的方法。以下是我用来使它工作的文件 .后遗症Node.js Sequelize无法与@babel/register一起使用,node.js,express,sequelize.js,babeljs,es6-modules,Node.js,Express,Sequelize.js,Babeljs,Es6 Modules,我试图在sequelize迁移中使用import-export语句,在其他问题和github问题中尝试了所有的方法。以下是我用来使它工作的文件 .后遗症 require('@babel/register'); require('@babel/polyfill'); const path = require('path'); module.exports = { 'config': path.resolve('config', 'config.json'), 'models-path':
require('@babel/register');
require('@babel/polyfill');
const path = require('path');
module.exports = {
'config': path.resolve('config', 'config.json'),
'models-path': path.resolve('models'),
'seeders-path': path.resolve('seeders'),
'migrations-path': path.resolve('migrations')
}
package.json
{
"name": "sideproject3",
"version": "0.0.0",
"private": true,
"type": "module",
"scripts": {
"dev": "nodemon --exec babel-node --experimental-specifier-resolution=node ./bin/www.js",
"start": "node --experimental-specifier-resolution=node ./bin/www.js",
"lint": "eslint --ignore-path .gitignore \"**/*.js\"",
"lint-fix": "eslint --ignore-path .gitignore --fix \"**/*.js\""
},
"dependencies": {
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
"dotenv": "^8.2.0",
"express": "~4.16.1",
"express-jwt": "^6.0.0",
"http-errors": "~1.6.3",
"jade": "~1.11.0",
"jsonwebtoken": "^8.5.1",
"morgan": "~1.9.1",
"mysql2": "^2.2.5",
"sequelize": "^6.6.2"
},
"devDependencies": {
"@babel/cli": "^7.13.16",
"@babel/core": "^7.13.16",
"@babel/node": "^7.13.13",
"@babel/polyfill": "^7.12.1",
"@babel/preset-env": "^7.13.15",
"@babel/register": "^7.13.16",
"eslint": "^7.25.0",
"eslint-config-google": "^0.14.0",
"nodemon": "^2.0.7",
"sequelize-cli": "^6.2.0"
}
}
B.法律改革委员会
{
"presets": [
[
"@babel/preset-env"
]
]
}
migration.js
'use strict';
import { TABLE_NAMES, REQUEST_STATUS } from '../constants';
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable('Requests', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
message: {
type: Sequelize.TEXT,
},
status: {
type: Sequelize.ENUM([Object.values(REQUEST_STATUS)]),
},
requested_time: {
type: Sequelize.DATE,
},
requested_by_id: {
type: Sequelize.INTEGER,
references: {
model: TABLE_NAMES.USERS,
key: 'id',
},
},
requested_to_id: {
type: Sequelize.INTEGER,
references: {
model: TABLE_NAMES.USERS,
key: 'id',
},
},
reject_response: {
type: Sequelize.TEXT,
},
response_time: {
type: Sequelize.DATE,
allowNull: true,
},
type: {
type: Sequelize.STRING,
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
},
});
},
down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable('Requests');
},
};
其他人的解决方案告诉我们,使用@babel/register和使用preset env应该是有效的,但它不起作用,并给出以下错误
错误[ERR\U REQUIRE\U ESM]:必须使用导入加载ES模块:
。。。ES模块的require()不受支持
不是巴别塔专家,但预设不应该是一个简单的数组,而不是一个嵌套在另一个数组中的数组吗?@ChristianFritz不会有什么区别,也尝试了同样的错误