使用带有 React 和 Webpacker 的 Monaco Editor 的 regeneratorRuntime 错误
regeneratorRuntime error using Monaco Editor with React and Webpacker
我正在尝试让 Monaco Editor 在我的应用程序中工作以允许编辑 YAML。
我可以让它工作,但控制台抱怨 regeneratorRuntime 未定义,因此网络工作者可能无法工作。
iterator.js:18 Uncaught ReferenceError: regeneratorRuntime is not defined
at iterator.js:18
at Module../node_modules/monaco-editor/esm/vs/base/common/iterator.js (iterator.js:524)
at __webpack_require__ (bootstrap:19)
at Module../node_modules/monaco-editor/esm/vs/base/common/lifecycle.js (lifecycle.js:1)
at __webpack_require__ (bootstrap:19)
at Module../node_modules/monaco-editor/esm/vs/base/common/worker/simpleWorker.js (simpleWorker.js:1)
at __webpack_require__ (bootstrap:19)
at Module../node_modules/monaco-editor/esm/vs/editor/editor.worker.js (editor.worker.js:1)
at __webpack_require__ (bootstrap:19)
at bootstrap:83
我不是 babel 专家,但我认为我已经正确设置了它。这是我的 .babelrc
文件:
{
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "entry"
}
],
"@babel/preset-react"
],
"plugins": [
"@babel/syntax-dynamic-import",
"@babel/plugin-proposal-class-properties",
"babel-plugin-styled-components",
[
"@babel/plugin-transform-runtime"
]
]
}
以及 package.json
的一些相关部门
"@babel/core": "^7.14.3",
"@babel/plugin-transform-runtime": "^7.14.3",
"@babel/preset-env": "^7.14.4",
"@babel/preset-react": "^7.13.13",
"@babel/runtime": "^7.14.0",
"babel-loader": "^8.2.2",
我也在使用 Webpacker
5.4.0.
为了让编辑器正常工作,我设置了一个自定义配置文件:
// custom.js
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');
module.exports = {
plugins: [
new MonacoWebpackPlugin({
languages: ["yaml"],
publicPath: "/packs/"
}),
],
};
与environment.js中的Webpackers webpack配置合并:
// environment.js
const { environment } = require('@rails/webpacker');
const customConfig = require('./custom');
environment.config.merge(customConfig)
module.exports = environment;
然后我像往常一样导入编辑器,它加载得很好,除了控制台中的错误。 (我会把它排除在外,因为我认为它与问题无关);
有人知道会发生什么吗?我尝试将 @babel/plugin-transform-regenerator
添加到我的 babelrc 文件中,但没有成功。无论如何,这包含在@babel/preset-env
..
如有任何帮助,我将不胜感激!
我终于成功了。我没有提到的一件事是我的 Rails 版本 (5.1.6)。我将它升级到 5.2.x 以便它与 webpacker 5.4 同步。这给结构带来了一些变化,包括新的 babel 和 postcss 文件。
我还安装了 corejs 和 regenerator-runtime,现在一切正常。
吸取教训,在升级之前检查兼容性!
我找到了一个解决方案:将 targets: {esmodules: true}
添加到 @babel/preset-env
。例如:
{
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "entry",
targets: {
esmodules: true,
},
}
],
}
我正在尝试让 Monaco Editor 在我的应用程序中工作以允许编辑 YAML。 我可以让它工作,但控制台抱怨 regeneratorRuntime 未定义,因此网络工作者可能无法工作。
iterator.js:18 Uncaught ReferenceError: regeneratorRuntime is not defined
at iterator.js:18
at Module../node_modules/monaco-editor/esm/vs/base/common/iterator.js (iterator.js:524)
at __webpack_require__ (bootstrap:19)
at Module../node_modules/monaco-editor/esm/vs/base/common/lifecycle.js (lifecycle.js:1)
at __webpack_require__ (bootstrap:19)
at Module../node_modules/monaco-editor/esm/vs/base/common/worker/simpleWorker.js (simpleWorker.js:1)
at __webpack_require__ (bootstrap:19)
at Module../node_modules/monaco-editor/esm/vs/editor/editor.worker.js (editor.worker.js:1)
at __webpack_require__ (bootstrap:19)
at bootstrap:83
我不是 babel 专家,但我认为我已经正确设置了它。这是我的 .babelrc
文件:
{
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "entry"
}
],
"@babel/preset-react"
],
"plugins": [
"@babel/syntax-dynamic-import",
"@babel/plugin-proposal-class-properties",
"babel-plugin-styled-components",
[
"@babel/plugin-transform-runtime"
]
]
}
以及 package.json
的一些相关部门"@babel/core": "^7.14.3",
"@babel/plugin-transform-runtime": "^7.14.3",
"@babel/preset-env": "^7.14.4",
"@babel/preset-react": "^7.13.13",
"@babel/runtime": "^7.14.0",
"babel-loader": "^8.2.2",
我也在使用 Webpacker
5.4.0.
为了让编辑器正常工作,我设置了一个自定义配置文件:
// custom.js
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');
module.exports = {
plugins: [
new MonacoWebpackPlugin({
languages: ["yaml"],
publicPath: "/packs/"
}),
],
};
与environment.js中的Webpackers webpack配置合并:
// environment.js
const { environment } = require('@rails/webpacker');
const customConfig = require('./custom');
environment.config.merge(customConfig)
module.exports = environment;
然后我像往常一样导入编辑器,它加载得很好,除了控制台中的错误。 (我会把它排除在外,因为我认为它与问题无关);
有人知道会发生什么吗?我尝试将 @babel/plugin-transform-regenerator
添加到我的 babelrc 文件中,但没有成功。无论如何,这包含在@babel/preset-env
..
如有任何帮助,我将不胜感激!
我终于成功了。我没有提到的一件事是我的 Rails 版本 (5.1.6)。我将它升级到 5.2.x 以便它与 webpacker 5.4 同步。这给结构带来了一些变化,包括新的 babel 和 postcss 文件。
我还安装了 corejs 和 regenerator-runtime,现在一切正常。
吸取教训,在升级之前检查兼容性!
我找到了一个解决方案:将 targets: {esmodules: true}
添加到 @babel/preset-env
。例如:
{
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "entry",
targets: {
esmodules: true,
},
}
],
}