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

问题描述 投票:0回答:1

我正在尝试使用 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

node.js import gatsby dynamic-import
1个回答
0
投票

更新(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 };
};
© www.soinside.com 2019 - 2024. All rights reserved.