在NodeJS中动态导入在Gatsby中:未指定动态导入回调

问题描述

我正在尝试使用带有eS6文件的NodeJS中的动态导入,但无法使其工作

我正在其gatsby文件中的gatsby-node.js项目中使用它

exports.createPages = async props => {
  
  //...

  const name = './test'
  ;(async () => {
    const data = await import(name)
    console.log(data)
  })()

test.js所在的地方

export const hey = 'hi'

但是我总是得到这个A dynamic import callback was not specified.

为什么不起作用? NodeJS版本为12.18.4

解决方法

由于它当前不是发布版本,因此您需要安装ES6的每个所需模块(以您的情况为{babel-plugin-syntax-dynamic-import)并将其添加到babel配置中。

运行:

npm install --save-dev @babel/plugin-syntax-dynamic-import

然后,在您的Babel文件中(项目根目录中的babel.config.js.babelrc)将其添加到plugins数组中:

  "plugins": ["@babel/plugin-syntax-dynamic-import"]

理想情况下,您的Babel文件应如下所示:

module.exports = function(api) {
  api.cache(true);

  const presets = [
    [`@babel/preset-env`,{ 'useBuiltIns': `usage`,'corejs': `2` }],[`@babel/preset-react`,{ 'development': true,minify: true }],];

  const plugins = [
    `@babel/plugin-syntax-dynamic-import`,];

  return { presets,plugins };
};

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...