1

我正在使用 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 文件(它也这样做但无法识别模块)。

4

1 回答 1

2

出于某种原因,当我导入从 typescript 编译的文件时,我必须指定 .js 扩展名(没有它就无法工作)。

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

更多的

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

于 2016-08-02T21:51:34.670 回答