当前位置: 首页 > 知识库问答 >
问题:

TypeError:(中间值)不是一个函数在异步Promise.all

罗和煦
2023-03-14

我正在重构我的索引文件,该文件在Sequelize中创建我的所有模型,以使用导入,而不是切换到节点v14和Sequelize v6和模块的require。但我被这个奇怪的错误困住了:

TypeError:(中间值)不是当前的函数file:///C:/.../models/index.js:41:6异步promise。全部(索引0)

下面是发生这种情况的代码块:

fs.readdir(__dirname, (err, files) => {
    console.log('in the readdir!!');
    if (err) {
        console.log({ err });
    } else {
        console.log('the else!');
        console.log({ files });
        const promise_arr = files
            .filter((file) => {
                return (
                    file.indexOf('.') !== 0 &&
                    file !== basename &&
                    file.slice(-3) === '.js'
                );
            })
            .map(async (file) => {
                // const model = sequelize['import'](path.join(__dirname, file));
                console.log({ file });
                console.log({ __dirname });
                return (
                    await import('file:///' + path.join(__dirname, file))
                )(sequelize, Sequelize.DataTypes);
            });
        console.log({ promise_arr });
        Promise.all(promise_arr)
            .then((models) => {
                models.forEach((model) => (db[model.name] = model));
                associateCB();
            })
            .catch((e) => console.log({ e }));
    }
});

function associateCB() {
    console.log('associateCB with: ', db);
    Object.keys(db).forEach((modelName) => {
        if (db[modelName].associate) {
            db[modelName].associate(db);
        }
    });
    console.log(1, { db });
}

错误表明它发生在这一行:)(sequelize,sequelize.DataTypes)


共有1个答案

上官和韵
2023-03-14

看起来可能是分号问题?请参阅:未捕获类型错误:(中间值)(…)这不是一个函数

return (
    await import('file:///' + path.join(__dirname, file)); // <--- Add this semicolon
)(sequelize, Sequelize.DataTypes);
 类似资料:
  • 问题内容: 我在尝试简化导入时遇到webpack TypeError。以下代码可以正常工作。在这里,我导入了一个从调用的React高阶组件(HOC)。 core / components / form / index.js (对进行命名输出) login-form.jsx (导入和使用) 但是,我想将导入简化为just 。所以,我再出口的和进口它。请参见下面的代码: core / index.js

  • 我有这个功能: 不知什么原因,我得到以下错误: 我看了这篇文章:https://stackoverflow.com/questions/44176021/nodejs-res-send-is-not-a-function 它看起来像另一只虫子。 我怎样才能修好它?

  • 我试图了解异步/等待如何与promise一起工作。 据我所知,await应该是阻塞的,在上面的代码中,它似乎阻塞了返回带有原语

  • 我有一个异步函数,它调用其中的另一个异步函数。此异步函数正在返回" 你能帮我解决这个问题吗? 以下是第一个异步函数: 如你所见,我调用updateAllProducts函数,并将该值存储到一个变量调用newAllProducts. updateAllProducts是另一个异步函数。 以下是updateAllProducts的代码: 此updateAllProducts函数正在调用另一个异步函数调

  • 我试图利用es7异步功能,即。 在这里,所有promise*函数都进行ajax调用,并返回或如果ajax响应满足传递的参数,我相信我不能连续使用3个等待,因此需要一种方法来等待所有这些调用以某种方式返回它们的值。

  • 我试着按照教程angular.io(游览英雄)但不是教程,我试着在一些JSON上提出真正的GET请求。 我的代码如下所示: 为了服务,我只进口一些基本的东西: 其中是TOH中的基本副本,所以: 如何在服务中调用此特定方法:首先,我尝试多种方法,但在调试时,我只尝试控制台。将其记录为: 在控制台中加载页面时,我发现多个错误:第一个错误是: 例外:TypeError:这是一个错误。http。得到(…)