将园子的 vscode 扩展所依赖的 vscode engine 从 1.70.0 升级至 1.100.0 后,扩展在激活时出现下面的错误
Activating extension 'cnblogs.vscode-cnb' failed: ENOENT: no such file or directory, open 'c:\Users\Administrator\.vscode\extensions\cnblogs.vscode-cnb-1.0.0-beta.1754640319\dist\bridge.js'.
请问如何解决这个问题?
卸载,直接安装最新版再装插件
是自己开发的插件
终于定位到是下面的代码引起的
const download: (arg: Record<string, unknown>) => Promise<string> = require('download-chromium')
所使用的 npm 包是 download-chromium
通过 createRequire 可以消除这个错误
const require = createRequire(import.meta.url);
const download: (arg: Record<string, unknown>) => Promise<string> = require('download-chromium')
解决方法来自 https://nodejs.org/api/module.html#modulecreaterequirefilename
但 build 时 esbuild 会出现下面的警告
▲ [WARNING] "import.meta" is not available with the "cjs" output format and will be empty [empty-import-meta]
src/infra/chromium-path-provider.ts:8:30:
8 │ const require = createRequire(import.meta.url);
╵ ~~~~~~~~~~~
You need to set the output format to "esm" for "import.meta" to work correctly.
使用 createRequire 会出现下面的错误
Activating extension 'cnblogs.vscode-cnb' failed: The argument 'filename' must be a file URL object, file URL string, or absolute path string. Received undefined.