【发布时间】:2020-10-17 04:07:55
【问题描述】:
我正在尝试创建一个简单的 ui 窗口,我可以在其中快速测试反应代码。 所以我的想法是我在窗口中输入 react jsx 代码,而在另一个窗口中我正在从该代码中获取应用程序。
输入(带有 react jsx 代码)被发送到 nodejs 进程,该进程将其转换为可以在浏览器反应库中处理的普通 js 代码。我遇到的问题是这个错误regeneratorRuntime is not defined。
我当前的代码:
const babel = require("@babel/core");
// body comes from window input
console.log(
babel.transform(body, {
"presets": ["@babel/env", "@babel/react"],
"plugins": ["@babel/plugin-proposal-class-properties"]
}).code
);
我阅读了一些关于此错误的主题,大多数似乎都建议添加"@babel/plugin-transform-runtime"
这样就变成了:
console.log(
babel.transform(body, {
"presets": ["@babel/env", "@babel/react"],
"plugins": ["@babel/plugin-proposal-class-properties", "@babel/plugin-transform-runtime"]
}).code
);
但是此时 babel 转换返回的代码在开头包含这些:
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
但是由于这段代码是由浏览器处理的,所以会抛出错误Uncaught ReferenceError: require is not defined
如何解决这个问题,以向浏览器提供已经“准备好”但不包含任何要求的代码?
【问题讨论】: