Glob import returns Parcel 中的空模块
Glob import returns empty module in Parcel
我使用 Parcel 是为了它的速度,但我有一个小问题。 Glob 解析器只是忽略文件夹内容。
我需要从包含 PDF 和 HTML 文件的文件夹 /documents
导入所有内容。所以我尝试了:
import * Docs from "url:/documents/*.{html,pdf}"
但它不起作用,在 source map 中,有一个文件 /documents/*.js
:
module.exports = {}
.parcelrc
{
"extends": "@parcel/config-default",
"resolvers": [
"@parcel/resolver-glob",
"..."
]
}
我认为您需要将 /documents
更改为 ./documents
,并添加一个“as”关键字,因此完整导入为:
import * as Docs from "url:./documents/*.{html,pdf}"
在内部,@parcel/resolver-glob
使用 isGlob 来测试字符串是否是有效的 glob,如果不是则静默退出。如果它能给你一些关于错误的反馈,这可能是一个更好的错误体验¯_(ツ)_/¯
这里是an example project where glob imports are working correctly。
包裹退回 {}
的真正问题是 Scope Hoisting。我想动态访问:
import * as Docs from "url:./documents/*.{html,pdf}";
const embeds = Object.values(Docs).map(src => (
<iframe src={src} className="document" />
));
所以解决方案是通过 --no-scope-hoist
关闭范围提升
我使用 Parcel 是为了它的速度,但我有一个小问题。 Glob 解析器只是忽略文件夹内容。
我需要从包含 PDF 和 HTML 文件的文件夹 /documents
导入所有内容。所以我尝试了:
import * Docs from "url:/documents/*.{html,pdf}"
但它不起作用,在 source map 中,有一个文件 /documents/*.js
:
module.exports = {}
.parcelrc
{
"extends": "@parcel/config-default",
"resolvers": [
"@parcel/resolver-glob",
"..."
]
}
我认为您需要将 /documents
更改为 ./documents
,并添加一个“as”关键字,因此完整导入为:
import * as Docs from "url:./documents/*.{html,pdf}"
在内部,@parcel/resolver-glob
使用 isGlob 来测试字符串是否是有效的 glob,如果不是则静默退出。如果它能给你一些关于错误的反馈,这可能是一个更好的错误体验¯_(ツ)_/¯
这里是an example project where glob imports are working correctly。
包裹退回 {}
的真正问题是 Scope Hoisting。我想动态访问:
import * as Docs from "url:./documents/*.{html,pdf}";
const embeds = Object.values(Docs).map(src => (
<iframe src={src} className="document" />
));
所以解决方案是通过 --no-scope-hoist