node.js - 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
解决方案
由于它当前不是发布版本,因此您需要安装babel-plugin-syntax-dynamic-import
ES6 的每个所需模块(在您的情况下)并将其添加到您的 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 };
};
推荐阅读
- vue.js - 环回抛出错误无法处理的实体
- json - 在 jsonnet 中使用条件参数导入
- regex - 你如何在 ruby 中获得正则表达式匹配组?
- python - 在 PyQT5 GUI 应用程序中运行一个活动窗口
- javascript - 关闭一个引导模式并立即打开另一个会导致滚动问题
- javascript - 未捕获的错误:打包程序未在 http://10.0.1.193:19002 处运行
- excel - 在 selenium vba 中执行代码期间从控制台获取值
- serial-port - 串行通信不返回确认是标准做法吗?
- spring-boot - 启动时 Spring Data GemFire 和 GemFire 缓存与 Spring Boot 之间的松散耦合
- r - 如何根据文件名中的日期选择目录中的文件并复制到另一个文件夹