0

我正在处理 esbuild 配置,并希望manifest.json在构建项目以进行测试时将文件 ( ) 复制到特定文件夹。我将复制插件包含在我的esbuild-config.mjs

import esbuild from "esbuild";
import process from "process";
import builtins from 'builtin-modules'
import copy from 'esbuild-plugin-copy';

const prod = (process.argv[2] === 'production');
    
const baseConfig = {
    // ...
};

const testVaultPluginFolder = 'test-vault/.obsidian/plugins/obsidian-sample-plugin/';
const devConfig = {
    ...baseConfig,
    outfile: testVaultPluginFolder + 'main.js',
    plugins: [
        copy({  // <- This line causes the problem
            assets: [
                { from: ['manifest.json'], to: [testVaultPluginFolder] }
            ]
        })
    ]
};

const prodConfig = {
    ...baseConfig,
    outfile: 'main.js',
};

if (prod){
    esbuild.build(prodConfig).catch(() => process.exit(1));
} else {
    esbuild.build(devConfig).catch(() => process.exit(1));
}

我什至可以Ctrl + Click进入 VS Code 中的复制功能。

然后当我运行它时,它告诉我 copy 不是一个函数:

$ npm run dev

> obsidian-sample-plugin@1.1.0 dev C:\Workspaces\RNSS-Sample\obsidian-sample-plugin
> node esbuild.config.mjs

file:///C:/Workspaces/.../obsidian-sample-plugin/esbuild.config.mjs:59
                copy({
                ^

TypeError: copy is not a function
    at file:///C:/Workspaces/.../obsidian-sample-plugin/esbuild.config.mjs:59:3
    at ModuleJob.run (internal/modules/esm/module_job.js:170:25)
    at async Loader.import (internal/modules/esm/loader.js:178:24)
    at async Object.loadESM (internal/process/esm_loader.js:68:5)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! obsidian-sample-plugin@1.1.0 dev: `node esbuild.config.mjs`
npm ERR! Exit status 1

编辑:进一步研究

我发现了这个问题,其中复制(到剪贴板)功能产生了相同的错误:devtools console: copy is not a function while on youtube

问题是,DOM 包含另一个名为 copy 的元素,它不是函数。即使我不在浏览器中,我也尝试重命名导入。

import copyIsADamnFunction from 'esbuild-plugin-copy';

plugins: [
    copyIsADamnFunction({
        assets: [
            { from: ['manifest.json'], to: [testVaultPluginFolder] }
        ]
    })
]

结果相同:

TypeError: copyIsADamnFunction is not a function
    at file:///C:/Workspaces/.../obsidian-sample-plugin/esbuild.config.mjs:59:3

当我删除导入时,我得到

ReferenceError: copy is not defined
    at file:///C:/Workspaces/.../obsidian-sample-plugin/esbuild.config.mjs:58:11

所以进口进口了一些东西。VS Code 告诉我鼠标悬停在该副本上的是一个函数,其中一个可选参数返回 a esbuild.Plugin

(alias) copy(options?: Partial<Options>): esbuild.Plugin
import copy

如果我编写copy.VS Code 甚至可以为我提供代码完成,例如,apply和它们都属于. 怎么可能没有函数?argumentsbindcallFunction.prototypecopy

4

0 回答 0