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
我正在使用 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