gpt4 book ai didi

javascript - 如何使用 fetch polyfill、rollup 和 typescript 创建 umd 包?

转载 作者:行者123 更新时间:2023-12-03 19:06:10 25 4
gpt4 key购买 nike

我正在尝试将库与汇总捆绑在一起。
在这个库中,我正在发出 http 请求。
我想使用 fetch并在节点上运行代码时使用 polyfill。
我无法正确配置。
它可以在节点上工作但不能在浏览器中工作,或者相反。
这是我的配置文件的样子:

 module.exports = [{
input: 'src/mylibrary.ts',
output: {
name: LIB_NAME,
file: getOutputFileName(
resolve(ROOT, pkg.browser),
env === 'production'
),
format: 'umd',
globals: {
fetch: 'cross-fetch',
},
},
plugins: [
typescript({
useTsconfigDeclarationDir: true,
tsconfigOverride: {
allowJs: false,
includes: ['src'],
exclude: ['tests', 'examples', '*.js', 'scripts'],
esModuleInterop: true,
},
}),
nodeResolve({
mainFields: ['jsnext', 'main'],
preferBuiltins: true,
browser: true,
}),
commonjs({
include: ['node_modules/**'],
}),
json(),
env === 'production' ? terser() : {}, // will minify the file in production mode
],
}]

这是我在代码中导入 fetch 的方式:
import 'cross-fetch/polyfill'
在浏览器中效果很好✅
在节点中我有以下错误❌:
  throw new Error('unable to locate global object');
^

Error: unable to locate global object
当我查看捆绑的 umd 时,它来自这里:
var getGlobal = function () {
// the only reliable means to get the global object is
// `Function('return this')()`
// However, this causes CSP violations in Chrome apps.
if (typeof self !== 'undefined') { return self; }
if (typeof window !== 'undefined') { return window; }
if (typeof global !== 'undefined') { return global; }
throw new Error('unable to locate global object');
};
知道可能是什么问题吗?

最佳答案

我忘了加 cross-fetchexternal键(第 2 行)
以下示例适用于我:

 {
input: 'src/meilisearch.ts', // directory to transpilation of typescript
external: ['cross-fetch', 'cross-fetch/polyfill'],
output: {
name: LIB_NAME,
file: getOutputFileName(
// will add .min. in filename if in production env
resolve(ROOT, pkg.browser),
env === 'production'
),
format: 'umd',
sourcemap: env === 'production', // create sourcemap for error reporting in production mode
},
plugins: [
typescript({
useTsconfigDeclarationDir: true,
tsconfigOverride: {
allowJs: false,
includes: ['src'],
exclude: ['tests', 'examples', '*.js', 'scripts'],
esModuleInterop: true,
},
}),
babel({
babelrc: false,
extensions: ['.ts'],
presets: [
[
'@babel/preset-env',
{
modules: false,
targets: {
browsers: ['last 2 versions', 'ie >= 11'],
},
},
],
],
}),
nodeResolve({
mainFields: ['jsnext', 'main'],
preferBuiltins: true,
browser: true,
}),
commonjs({
include: ['node_modules/**'],
}),
json(),
env === 'production' ? terser() : {}, // will minify the file in production mode
],
},

关于javascript - 如何使用 fetch polyfill、rollup 和 typescript 创建 umd 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63594241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com