首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为esbuild复制插件“不是一个函数”

为esbuild复制插件“不是一个函数”
EN

Stack Overflow用户
提问于 2022-02-22 08:36:39
回答 1查看 1.2K关注 0票数 0

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

代码语言:javascript
复制
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代码中的复制函数中。

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

代码语言:javascript
复制
$ 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控制台:在youtube上复制不是一个函数

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

代码语言:javascript
复制
import copyIsADamnFunction from 'esbuild-plugin-copy';

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

同样的结果:

代码语言:javascript
复制
TypeError: copyIsADamnFunction is not a function
    at file:///C:/Workspaces/.../obsidian-sample-plugin/esbuild.config.mjs:59:3

当我移除导入时

代码语言:javascript
复制
ReferenceError: copy is not defined
    at file:///C:/Workspaces/.../obsidian-sample-plugin/esbuild.config.mjs:58:11

所以进口品是进口的。VS代码告诉我鼠标上的副本是一个函数,其中一个可选参数返回一个esbuild.Plugin

代码语言:javascript
复制
(alias) copy(options?: Partial<Options>): esbuild.Plugin
import copy

如果我编写copy. VS代码,甚至会为我提供applyargumentsbindcall等属于Function.prototype的代码完成功能。copy怎么可能不是一个函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-17 15:52:59

显然这是插件中的一个bug。它应该在一个实际的版本中修复。

除此之外,线程中的某个人提供了一个为我工作的工作方法:

而不是

代码语言:javascript
复制
import copy from 'esbuild-plugin-copy';

使用

代码语言:javascript
复制
import { copy } from "esbuild-plugin-copy";
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71218166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档