相关疑难解决方法(0)

Typescript/babel 导入导致“_1.default 不是函数”

我正在尝试从使用 webpack 和 babel 编译的打字稿项目中使用https://github.com/timmywil/panzoom

问题是打字稿方法调用:

import Panzoom from '@panzoom/panzoom';
Panzoom(document.querySelector("#pic"));
Run Code Online (Sandbox Code Playgroud)

被转换为以下 javascript:

panzoom_1.default(document.querySelector("#pic"));
Run Code Online (Sandbox Code Playgroud)

然后生成以下运行时错误:

Uncaught TypeError: panzoom_1.default is not a function
Run Code Online (Sandbox Code Playgroud)

如果我调试 javascript 则panzoom_1具有预期的函数签名并且它没有default成员。

这是无数不同类型的模块、默认导出以及 babel 和 typescript 导入方式的差异之间的某种类型的问题,但我完全迷失了。根据文档,panzoom如果有帮助,是一个 UMD 模块。

我找到了一种解决方法,可以以不同的方式导入,然后将其转换为任何方式,但这显然很疯狂,对吗?:

Uncaught TypeError: panzoom_1.default is not a function
Run Code Online (Sandbox Code Playgroud)

下面是项目配置:

测试.html

import * as Panzoom from '@panzoom/panzoom';
(<any>Panzoom)(document.querySelector("#pic"));
Run Code Online (Sandbox Code Playgroud)

测试文件

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">   
</head>
<body>
    <img src="pic.jpg" id="pic" />
</body>
<script src="dist/bundle.js" type = "text/javascript"></script>
</html>
Run Code Online (Sandbox Code Playgroud)

配置文件

{
    "compilerOptions": …
Run Code Online (Sandbox Code Playgroud)

javascript typescript webpack babeljs

10
推荐指数
1
解决办法
9072
查看次数

为什么 VSCode 调试器总是将节点导入显示为未定义?

VSCode 调试器总是将导入显示为未定义,即使它们显然没有定义,为什么它会这样做,有没有办法修复它?

在下面的示例中,变量“Lot”被导入并且不是未定义的,如 console.log 行的结果所示,但是当我在调试器中手动键入“Lot”时,它说它是未定义的。

带有调试器和代码的屏幕截图

示例中的代码:

import Lot from '../db/models/Lot'

console.log(Lot === undefined) // prints false
console.log("break") // Debugger stopped at this breakpoint shows Lot as undefined 

Run Code Online (Sandbox Code Playgroud)

如果我将 Lot 分配给局部变量,那么它会起作用:

const Lot2 = Lot
console.log("break") // Debugger stopped at this breakpoint shows Lot2 as defined
Run Code Online (Sandbox Code Playgroud)

node.js ecmascript-6 visual-studio-code

5
推荐指数
1
解决办法
1127
查看次数