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

erhoui1w  于 2023-06-29  发布在  Node.js
关注(0)|答案(1)|浏览(98)

我尝试在NodeJS中使用动态导入,使用eS6文件,但无法正常工作
我在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

izj3ouym

izj3ouym1#

更新(2022年11月11日)

语法应该是有效的,而无需导入任何额外的插件与Babel。
如果您需要它们或需要调整/自定义其配置,请继续阅读。
由于它目前不是发布版本,因此您需要安装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 };
};

相关问题