gpt4 book ai didi

javascript - 使用 typescript 导入外部模块时出现问题(newb)

转载 作者:行者123 更新时间:2023-12-03 01:07:28 24 4
gpt4 key购买 nike

我是 JS 的新手,尤其是 Typescript。我正在使用 npm 6.2.0 和 typescript 3.0.1。我正在尝试导入“文件保护程序”模块并使用它。它的 index.d.ts 看起来像这样:

declare namespace FileSaver {
function saveAs(data: Blob, filename?: string, disableAutoBOM?: boolean): void;
}
declare global {
const saveAs: typeof FileSaver.saveAs;

interface Window {
saveAs: typeof FileSaver.saveAs;
}
}
export = FileSaver;

当我将其导入到我的代码中时(尝试了各种方法,这是最新的):

import { saveAs } from 'file-saver';
// later...
saveAs(blob, 'stuff.json');

汇总给我这个错误:

build/js/src/ngl.js → build/js/ngl.dev.js, build/js/ngl.esm.js...
(!) Missing global variable name
Use output.globals to specify browser global variable names corresponding
to external modules
file-saver (guessing 'fileSaver')

并且我的代码无法在浏览器(Chrome)中运行。我在运行时得到这个:

viewer.js:915 Uncaught TypeError: Cannot read property 'saveAs' of undefined
at Viewer.__render (viewer.js:915)
at Viewer.render (viewer.js:947)
at viewer.js:745

这是我的rollup.config.js(略为缩短):

import buble from 'rollup-plugin-buble';
import json from 'rollup-plugin-json';
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';

var path = require('path');
var pkg = require('./package.json');
var external = Object.keys(pkg.dependencies);

...

export default {
input: 'build/js/src/app.js',
plugins: [
resolve({
jsnext: true,
main: true
}),
commonjs({
namedExports: {
'node_modules/chroma-js/chroma.js': [ 'scale' ],
'node_modules/signals/dist/signals.js': [ 'Signal' ],
'node_modules/sprintf-js/src/sprintf.js': [ 'sprintf' ]
}
}),
json(),
buble()
],
output: [
{
file: "build/js/app.dev.js",
format: 'umd',
name: 'App',
sourcemap: true
},
{
file: "build/js/app.esm.js",
format: 'es',
name: 'App',
sourcemap: true
}
],
external: external
};

最佳答案

尝试从 rollup.config.js 中删除 external 选项。此选项告诉 Rollup 应从 bundle 中省略 file-saver 模块,因为它将在您的目标环境中可用;在浏览器中,情况并非如此。

关于javascript - 使用 typescript 导入外部模块时出现问题(newb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52335862/

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