我正在使用Browserify,Babel,gulp并注意到一种奇怪的行为。
假设我有一个名为'./lib.js'的文件。是ES6,我应该能够使用这两种语法:
import lib from "./lib.js"
import lib from "./lib"
然而,第一种语法总是有效,但对于某些模块,第二种语法不然。我没有获得带有导出的对象,而是获得了一个空对象。
不管是否包含扩展名,browserify的行为都不同吗?它对我们应该如何申报出口有其他限制吗?
实际上这是一个问题,因为我最近在我的项目中添加了带有tsify
的Typescript。出于某种原因,当我导入一个从typescript编译的文件时,我必须指定.js
扩展名(它没有用)。但是当我从另一个.ts
文件导入.ts
文件时,我不想指定扩展名,因为我希望Typescript能够获取.ts
文件(当我不做时不指定扩展名和Browserify来拾取已编译的js文件(它也可以识别模块)。
答案 0 :(得分:2)
由于某些原因,当我导入一个从typescript编译的文件时,我必须指定.js扩展名(它没有工作)。
这是因为TypeScript可能无法检测 js 文件。请将allowJs
添加到编译器选项中。
我制作了一段视频,其中显示了allowJs
用法及其可能对您有用的影响:https://www.youtube.com/watch?v=gmKXXI_ck7w