Browserify、Babel 和文件扩展名

Browserify, Babel and file extensions

我正在使用 Browserify、Babel、gulp 并注意到一个奇怪的行为。

假设我有一个名为“./lib.js”的文件。是ES6,我应该可以使用这两种语法:

import lib from "./lib.js"
import lib from "./lib"

然而,第一种语法始终有效,但对于某些模块,第二种语法无效。我得到的不是一个对象,而是一个空对象。

无论是否包含扩展,browserify 的行为是否不同?它对我们应该如何申报出口有额外的限制吗?

实际上这是一个问题,因为我最近在我的项目中添加了 Typescript,tsify。出于某种原因,当我导入从打字稿编译的文件时,我必须指定 .js 扩展名(没有它就无法工作)。但是当我从另一个 .ts 文件导入 .ts 文件时,我不想指定扩展名,因为我希望 Typescript 获取 .ts 文件(当我不这样做时它会这样做't 指定扩展名)和 Browserify 以获取编译后的 js 文件(它也这样做但无法识别模块)。

For some reason when I import a file compiled from typescript I have to specify the .js extension (it doesn't work without).

这是因为 TypeScript 可能无法检测到 js 文件。请将 allowJs 添加到您的编译器选项中。

更多

我制作了一个显示 allowJs 用法及其影响的视频,您可能会觉得有用:https://www.youtube.com/watch?v=gmKXXI_ck7w