Javascript 使用异步导致:错误[ERR\u REQUIRE\u ESM]:必须使用导入加载ES模块asyncToGenerator.js
我在babel和node js中遇到了一个“async”问题,好几天都无法解决。。。错误如下:Javascript 使用异步导致:错误[ERR\u REQUIRE\u ESM]:必须使用导入加载ES模块asyncToGenerator.js,javascript,node.js,ecmascript-6,babeljs,Javascript,Node.js,Ecmascript 6,Babeljs,我在babel和node js中遇到了一个“async”问题,好几天都无法解决。。。错误如下: Error[ERR\u REQUIRE\u ESM]:必须使用导入加载ES模块:C:\BOOSTACKSTICK\BOOSTACK\node\u modules\@babel\runtime\helpers\ESM\asyncToGenerator.js不支持ES模块的[1]REQUIRE()。[1] C:\BOOSTACKSTICK\BOOSTACK\node\u modules\@babel\ru
Error[ERR\u REQUIRE\u ESM]:必须使用导入加载ES模块:C:\BOOSTACKSTICK\BOOSTACK\node\u modules\@babel\runtime\helpers\ESM\asyncToGenerator.js不支持ES模块的[1]REQUIRE()。[1] C:\BOOSTACKSTICK\BOOSTACK\node\u modules\@babel\runtime\helpers\esm\asynchtogenerator.js中的C:\BOOSTACKSTICK\BOOSTACK\prod server\api\auth\auth-controller.js的require()是一个ES模块文件,因为它是一个.js文件,其最近的父包.json包含“type”:“module”,它将该包范围内的所有.js文件定义为ES模块。[1] 将asyncToGenerator.js重命名为.cjs,将所需代码更改为使用import(),或从C:\BOOSTACKSTICK\BOOSTACK\node\u modules\@babel\runtime\helpers\esm\package.json中删除“type”:“module”。
我使用下面的config命令将我的dev server文件夹编译成prod服务器
package.json
"scripts": {
"serve": "vue-cli-service serve",
"build": "babel dev-server --out-dir prod-server && vue-cli-service build",
"lint": "vue-cli-service lint",
"dev": "concurrently \"babel dev-server --out-dir prod-server --watch\" \"nodemon prod-server/index.js\" \"npm run serve\" "
},
"devDependencies": {
"@babel/cli": "^7.12.1",
"@babel/core": "^7.12.3",
"@babel/node": "^7.12.1",
"@babel/plugin-transform-async-to-generator": "^7.12.1",
"@babel/plugin-transform-runtime": "^7.12.1",
"@babel/preset-env": "^7.12.1",
"@babel/runtime-corejs3": "^7.12.1",
"@vue/cli-plugin-babel": "^4.5.8",
"@vue/cli-plugin-eslint": "^4.5.8",
"@vue/cli-service": "^4.5.8",
"babel-eslint": "^10.1.0",
"compass-mixins": "^0.12.10",
"concurrently": "^5.3.0",
"core-js": "^3.6.5",
"css-loader": "^3.6.0",
"eslint": "^5.16.0",
},
.babelrc
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "usage", // or "entry"
"corejs": 3,
"targets": {
"node": "current"
}
}
]
],
"plugins": [
[
"@babel/plugin-transform-runtime",
{
"corejs": 3
}
],
["@babel/plugin-proposal-class-properties"]
]
}
环境
Node: v12.16.3
Babel: 7.12.3
**导致问题的带有“async”的简单代码**
export async function index(req, res) {
return res.status(200).json({ user: "user" });
}
**巴别塔输出**
"use strict";
var _interopRequireDefault = require("C:/BOOSTACKSTICK/BOOSTACK/node_modules/@babel/runtime/helpers/interopRequireDefault");
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.index = index;
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs3/regenerator"));
require("regenerator-runtime/runtime");
var _asyncToGenerator2 = _interopRequireDefault(require("C:/BOOSTACKSTICK/BOOSTACK/node_modules/@babel/runtime/helpers/esm/asyncToGenerator"));
//Check And Validate Request (LOGIN METHODE)
function index(_x, _x2) {
return _index.apply(this, arguments);
}
function _index() {
_index = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(req, res) {
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
return _context.abrupt("return", res.status(200).json({
user: "user"
}));
case 1:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return _index.apply(this, arguments);
}
可能的解决方案
为避免此错误,我测试的唯一解决方法是手动修改node\u modules\@babel\runtime\helpers\esm\package.json
以删除“type”:module
并从node\u modules\@babel\runtime\helpers\esm\asyncToGenerator.js
是虫子还是我做错了什么
提前感谢您的回复。我对@babel/runtime/helpers/esm/arrayWithoutHoles有相同的问题bug。js@MirzaAndriamanamisoa这是我从巴贝尔团队得到的回应:在我这边,经过长时间的思考,我意识到我真的不需要它(巴贝尔)。。。因此,我删除了itI与@babel/runtime/helpers/esm/arrayWithoutHoles的相同问题bug。js@MirzaAndriamanamisoa这是我从巴贝尔团队得到的回应:在我这边,经过长时间的思考,我意识到我真的不需要它(巴贝尔)。。。所以我把它去掉了