我正在使用Browserify、Babel、gullow,并注意到一个奇怪的行为。
假设我有一个名为"的文件/如果是ES6,我应该可以同时使用这两种语法:
import lib from "./lib.js"
import lib from "./lib"
然而,第一种语法总是有效的,但对于某些模块,第二种语法不起作用。我得到的不是一个带有导出的对象,而是一个空对象。
无论我们是否包括扩展,浏览者的行为是否不同?它对我们如何申报出口有额外的限制吗?
事实上,这是一个问题,因为我最近在项目中添加了Typescript和tsify
。由于某种原因,当我导入从typescript编译的文件时,我必须指定.js
扩展名(没有它就无法工作)。但是,当我从另一个.ts
文件导入.ts
文件时,我不想指定扩展名,因为我希望Typescript拾取.ts
文件(当我没有指定扩展名时,它会这样做),而Browserify拾取编译后的js文件(它也会这样做,但无法识别模块)。
由于某种原因,当我导入从typescript编译的文件时,我必须指定.js扩展名(没有它就无法工作)。
这是因为TypeScript可能无法检测到js文件。请将allowJs
添加到编译器选项中。
更多
我制作了一个视频,展示了allowJs
的使用及其影响,您可能会觉得这很有帮助:https://www.youtube.com/watch?v=gmKXXI_ck7w