我正在使用 Angular、TypeScript 和 ES6 模块语法。假设我有一个定义如下的模块:
// SubModule.ts
import MyService from 'services/MyService';
export default angular.module('subModule', [])
.service('myService', MyService);
编译后的 JavaScript 将是:
var MyService_1 = require('services/MyService');
exports.default = angular.module('subModule', [])
.service('myService', MyService_1.default);
我的应用程序依赖于该模块。所以我在 App.ts 文件中有以下内容:
// App.ts
import SubModule from 'modules/SubModule';
angular.module('app', [SubModule.name]);
使用以下已编译的 JavaScript:
var SubModule_1 = require('modules/SubModule');
angular.module('app', [SubModule_1.default.name]);
所以,现在我正在尝试为浏览器捆绑这个。我目前正在尝试使用 Browserify,但我愿意使用任何可用的捆绑工具。Browserify 给我一个错误,例如:
无法从“C:\the\path\to\my\app”中找到模块“modules/SubModule”
那么如何让 Browserify 工作呢?还是有其他更好的工具?我在 Github 上发现了这个问题,似乎说TypeScript 的默认导出不能与 CommonJS 互操作。那我该怎么办?
编辑所以我想我找到了问题所在。Browserify 要求本地路径以./
. 因此,例如,我需要按如下方式引用我的子模块:
import SubModule from './modules/SubModule';
有没有人知道一个 Browserify 插件,即使我没有指定它也会自动查找相对路径./
?我的应用程序相当大,我不想修改所有导入语句。
或者,另一方面,是否有用于发出的 TypeScript 编译器'./modules/SubModule'
选项'modules/SubModule'
?