我是esBuild和ReactJS的新手,根据一个guid,我决定构建一个自定义的CLI Transpiling应用程序。我到了这一点,我在textarea中输入文本,但在客户端的控制台上出现以下错误消息主机版本“0.8.27”与二进制版本“0.9.0”不匹配。我知道我使用的是一个旧版本,我确实试图找到一种方法来解决这个问题,首先通过文档,因为他们已经完全抛弃了新版本上的startService()方法。但我找不到任何可能的解决方案,我的问题,有没有人与知识,以帮助我解决这个问题。下面是我的代码,它必须开始转译:
const startService = async () => {
ref.current = await esbuild.startService({
worker: true,
wasmURL: '/esbuild.wasm'
})
}
useEffect(() => {
startService()
}, [])
const onClick = async () => {
if (!ref.current) {
return;
}
const result = await ref.current.build({
entryPoints: ['index.js'],
bundle: true,
write: false,
plugins: [unpkgPathPlugin()]
})
console.log(result );
setCode(result)
}
4条答案
按热度按时间vmpqdwk31#
在浏览器中运行esbuild的文档在这里:https://esbuild.github.io/api/#running-in-the-browser0.9.0版本中,
esbuild.startService()
变为esbuild.initialize()
,service.build()
变为esbuild.build()
(即显式服务对象消失)。因此,更新后的代码可能看起来像这样:dddzy1tm2#
请注意,在浏览器中运行时没有可用的异步API。另外,我不想每次在编辑时热重新加载时都抛出“已经初始化”。这是我如何设置的:
t3irkdon3#
伙计们,我有一个更好的解决方案,你可以热重新加载,没有错误。
qfe3c7zg4#
想出了一个更好的办法:
使用它就像
单例模式