@ babel / plugin-syntax-dynamic-import在导入的节点模块中不起作用

时间:2019-07-18 16:42:59

标签: vue.js webpack babeljs webpack-4

我的["@babel/plugin-syntax-dynamic-import"]文件中有.babelrc,并且在尝试使用{导入节点/ npm模块时,我可以成功地对自己项目中的Vue文件使用动态导入。 {1}}使用Webpack构建时出现此错误:

import App from '@something/app';

SyntaxError: \node_modules\@something\app\src\SomeApp.vue: Support for the experimental syntax 'dynamicImport' isn't currently enabled (16:19): 14 | name: 'SomeApp', 15 | components: { > 16 | SomeCompontent: () => import('./some-dir/SomeCompontent.vue'), | ^ Add @babel/plugin-syntax-dynamic-import (https://git.io/vb4Sv) to the 'plugins' section of your Babel config to enable parsing. 在我的项目中被启用为插件,并且正在导入节点模块,但是Babel出于某种原因不尊重它。

在导入节点模块时是否还需要做一些额外的工作才能使Babel应用此插件?

谢谢

1 个答案:

答案 0 :(得分:0)

因此,正如我在评论中所写,这是Babel中的预期行为。 但是解决这个问题并不是一件容易的事,因此我正在记录如何做到这一点,以防其他任何人都需要它。

您需要使用babel.config.js而非.babelrc,这是一种 global 配置方法。文件在这里:https://babeljs.io/docs/en/configuration 尽管确实如此,但只需将.babelrc复制并粘贴到babel.config.js并在对象之前添加module.exports =即可。

将Babel应用于node_modules后,您将创建其他问题。您需要防止Babel践踏自己和core-js。通过在您的ignore: [/[\/\\]core-js/, /@babel[\/\\]runtime/]中添加babel.config.js可以防止这种情况。

最后,由于不能混合使用modules.exportsexport default,因此您需要防止Babel破坏您的出口。对于我来说,此修复程序似乎有些小毛病,但\\ _(ツ)_ /¯。我们需要做的最后一件事就是将'sourceType': 'unambiguous'也添加到您的babel.config.js中。

到目前为止,上述步骤对我来说是完美的,如果我发现其他障碍,我将确保更新此答案。