JEST:异步方法中的错误:ReferenceError:regeneratorRuntime 未定义

Jos*_*los 5 javascript postgresql node.js jestjs

我正在尝试在不获取数据的情况下测试与数据库的连接。为此,我制作了这个测试文件。

\n\n
import { PGConnection } from "../../../db";\n\ntest(\'two plus two is four\', () => {\n    expect(2 + 2).toBe(4);\n});\n\ntest("Test connection to DDBB", () => {\n    const db = new PGConnection();\n\n    let result = db.test();\n    expect(result).toBe("Connection to database has been established succesfully");\n\n\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有一个类,我在其中创建与数据库的连接:

\n\n
import Sequelize from "sequelize";\n//It\'s mandatory to import dotenv in each file where we can use enviroment variables\nimport config from "dotenv";\nconfig.config(); \n\n//console.log("Usuario DDBB: " + loader.FEB_CONNECTION_USER);\n\n\nclass PGConnection{\n    constructor(){\n        this.db = this.setConnection();\n    }\n\n    setConnection(){\n        /*console.log("host: " + process.env.FEB_CONNECTION_HOST + "\\n" + \n        "port: " + process.env.FEB_CONNECTION_PORT + "\\n" + \n        "user: " + process.env.FEB_CONNECTION_USER + "\\n" +\n        "password: " + process.env.FEB_CONNECTION_PASSWORD + "\\n" + \n        "database: " + process.env.FEB_CONNECTION_DDBBNAME);   */      \n        return(\n            new Sequelize(\n                process.env.DDBB_NAME, \n                process.env.DDBB_USER,\n                process.env.DDBB_PSWD, {\n                    host: process.env.DDBB_HOST, \n                    port: process.env.DDBB_PORT,\n                    define: {\n                        freezeTableName: true, /**Don\'t add \'s to the end of each table/model */\n                        timestamps: false,  /**Don\'t add fields createdAt and updatedAt */\n        /*                 charset: \'utf8\',\n                        dialectOptions: {\n                            collate: \'utf8_general_ci\'\n                        },     */            \n                    },\n                    dialect: "postgres",\n                    //Remove operatorAliases due to an error when we update to sequelize 6.0.0\n                    //operatorsAliases: false,\n                    pool: {\n                        max: 5,\n                        min: 0,\n                        acquire: 30000,\n                        idle: 10000\n                    }\n                }\n            )\n        );\n    }\n\n    async test(){\n        try{\n            console.log("host: " + process.env.FEB_CONNECTION_HOST + \n            "port: " + process.env.FEB_CONNECTION_PORT + \n            "user: " + process.env.FEB_CONNECTION_USER +\n            "password: " + process.env.FEB_CONNECTION_PASSWORD + \n            "database: " + process.env.FEB_CONNECTION_DDBBNAME)\n            await this.db.authenticate();\n            console.log("Connection to database has been established succesfully");  \n            return ("Connection to database has been established succesfully");\n            //this.closeConnection();  \n        }catch (err){\n            console.error("Unable to connect to database: " + err);\n            return("Unable to connect to database: " + err);\n        }\n     }    \n\n    closeConnection(){\n        this.db.close();\n        console.log("Connection to database has been closed!!!")\n    }\n}\n\nmodule.exports.PGConnection = PGConnection;\n
Run Code Online (Sandbox Code Playgroud)\n\n

这门课效果很好。但是,当我尝试进行测试时,出现此错误:

\n\n
 FAIL  src/server/tests/test.spec.js\n  \xe2\x97\x8f Test suite failed to run\n\n    ReferenceError: regeneratorRuntime is not defined\n\n      65 | \n      66 |     closeConnection(){\n    > 67 |         this.db.close();\n         |                                                   ^\n      68 |         console.log("Connection to database has been closed!!!")\n      69 |     }\n      70 | }\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的 package.json 是:

\n\n
{\n  "name": "",\n  "version": "1.0.0",\n  "description": "Code to build an API for projects, users and tasks",\n  "main": "",\n  "scripts": {\n    "dev": "babel-node src/server/server.js",\n    "test": "jest ./server/tests"\n  },\n  "author": "",\n  "license": "ISC",\n  "dependencies": {\n    "cors": "^2.8.5",\n    "dotenv": "^8.2.0",\n    "express": "^4.17.1",\n    "helmet": "^3.22.0",\n    "morgan": "^1.10.0",\n    "pg": "^8.2.1",\n    "pg-hstore": "^2.3.3",\n    "sequelize": "^5.21.11"\n  },\n  "devDependencies": {\n    "@babel/cli": "^7.10.1",\n    "@babel/core": "^7.10.2",\n    "@babel/node": "^7.10.1",\n    "@babel/polyfill": "^7.10.1",\n    "@babel/preset-env": "^7.10.2",\n    "babel-loader": "^8.1.0",\n    "jest": "^26.0.1",\n    "webpack": "^4.43.0"\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我究竟做错了什么?

\n

Jos*_*los 9

我找到了解决该错误的解决方案。要修复它,您必须安装下一个插件:@babel/plugin-transform-runtime

npm install @babel/plugin-transform-runtime --save-dev
Run Code Online (Sandbox Code Playgroud)

另外,您必须在 .babelrc 文件中配置插件:

"env": {
    "test": {
      "plugins": ["@babel/plugin-transform-runtime"]
    }
}
Run Code Online (Sandbox Code Playgroud)