问题描述
我正在尝试使用带有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 };
};