我正在尝试使用 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
语法应该有效,无需使用 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 };
};