我正在构建一个Web应用程序。 我在客户端使用打字稿,在服务器端使用golang。 我使用打字稿3.9.2。
我想将.ts
文件编译为.js
,并使用模块。
默认编译将其编译为 CommonJS 模块加载器。
然后在浏览器的第二行中有一些exports.__...
。
我搜索了一下,它从根本上说它想要一个叫做export的变量,而我没有。在这种情况下,我不喜欢在其他脚本标签中定义模拟导出的主要解决方案。
我将compilerOption
更改为"module":"ES6"
然后编译并加载良好(将脚本的类型更改为模块后),但是浏览器找不到我要导入的模块。
代码如下:
use.ts
import * as fun from 'funcs'
let bar = fun.foo()
funcs.ts
export function foo() :boolean{
return true;
}
use.js
import * as fun from 'funcs'
var bar = fun.foo()
funcs.js
export function foo(){
return true;
}
现在,浏览器找不到/funcs
所需的use.js
。当我手动将use.js
中的第一行更改为
import * as fun from 'funcs.js'
有效。
我该怎么做才能使一切自动化? 这里的最佳做法是什么?
答案 0 :(得分:0)
ES模块导入需要具有.js
扩展名,但是Typescript的模块没有,并且现在似乎没有内置的选项可以自动添加它们,但是有人确实写了{{3} },即可将扩展名添加到导入中,也可以手动将其添加到导入中。
在TypeScript Github上有一些a script关于此问题和相关问题。他们正在考虑为浏览器的编译器添加模块解析选项。