0

当使用grunt-ts和指定和输出文件时,我的应用程序按预期运行,但由于该选项不支持快速编译,我尝试使用常规编译,其中所有.ts文件都位于dist文件夹中

有两个问题,首先,它将无法加载任何导入的文件,因为它会尝试在没有扩展名的情况下查找它。作为快速修复,我load在 require.js 文件上编辑了 fn 并且我的所有依赖项都正确加载,但随后源映射停止工作,我得到的只是 chrome 检查器上的一个空白文件(当然我不想依赖在一个肮脏的黑客上)。

请注意,我对 requirejs 不是很熟悉,所以我不太确定这是我这边的错误配置、错误还是缺少的东西。

我的 grunt 配置,与 ts 相关

ts: {
      options: {
        module: 'amd',
        target: 'es5',
        experimentalDecorators: true
      },
      dev: {
        src: ['client-app/**/*.ts'],
        outDir: "dist",
        watch: '.'
      }
    },

bootstrap.js这只是入口点和 require.js 配置文件

requirejs.config({
  baseUrl: '.',
  waitSeconds: 20
});

requirejs(['/init'], function(module) {
  module.main()
});

init编译文件的简化版本

define(["require", "exports", './section-manager.view'], function (require, exports, section_manager_view_1,) {
    "use strict";
    function main() {
        ///
    }
    exports.main = main;
});
//# sourceMappingURL=init.js.map

和 html

<script src="/js/lib/require.js" data-main="/bootstrap"></script>

任何帮助表示赞赏,谢谢

编辑:

使用 System.js 或 @Luis answer 解决了加载问题。通过使用sourceRoot或解决源映射问题

inlineSourceMap: true,
inlineSources: true

到 ts 选项

4

1 回答 1

1

不要使用绝对的模块名称。如果您确实使用了绝对名称,RequireJS 假定您在从模块名称生成路径时不希望进行任何更改,并且不会添加.js扩展名。您应该使用相对路径,或者您可以这样做:

requirejs.config({
    baseUrl: '/'
});

requirejs(['init'], function(module) {
  module.main()
});

通过这样做,RequireJS 将自动添加.js扩展。

于 2016-12-29T23:02:01.807 回答