首页 > 解决方案 > 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

标签: node.jsimportgatsbydynamic-import

解决方案


由于它当前不是发布版本,因此您需要安装babel-plugin-syntax-dynamic-importES6 的每个所需模块(在您的情况下)并将其添加到您的 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 };
};

推荐阅读