首页 > 解决方案 > 将 Sequelize 与 react-native 一起使用时,Metro 错误不支持定义的动态需求

问题描述

我在 react-native ios 应用程序中使用 node_module Sequelize,data-types.js位于 node_module/sequelize 文件夹中的文件导致 react-native 应用程序构建失败并出现错误Dynamic require defined at line 1033; not supported by Metro

data-types.js 中的代码部分,第 1033 行:

const dialectNames = ['postgres', 'mysql', 'mariadb', 'sqlite', 'mssql'];
const dialectMap = {};
for (const d of dialectNames) {
  dialectMap[d] = require(`./dialects/${d}/data-types`)(DataTypes);//<--Line 1033 
}

在此处输入图像描述

有人能解决这个问题吗?

标签: javascriptnode.jsreact-nativesequelize.js

解决方案


https://github.com/facebook/metro/issues/52

不得不改变它的工作代码:

const dialectNames = ['postgres', 'mysql', 'mariadb', 'sqlite', 'mssql'];
const dialectMap = {};
//for (const d of dialectNames) {
//  dialectMap[d] = require(`./dialects/${d}/data-types`)(DataTypes);
//}
dialectMap['postgres'] = require(`./dialects/postgres/data-types`)(DataTypes);
dialectMap['mysql'] = require(`./dialects/mysql/data-types`)(DataTypes);
dialectMap['mariadb'] = require(`./dialects/mariadb/data-types`)(DataTypes);
dialectMap['sqlite'] = require(`./dialects/sqlite/data-types`)(DataTypes);
dialectMap['mssql'] = require(`./dialects/mssql/data-types`)(DataTypes);

推荐阅读