【问题标题】:typescript compile on save breaks AngularJS in Visual Studio 2017打字稿在 Visual Studio 2017 中的保存中断 AngularJS 上编译
【发布时间】:2018-01-08 05:14:01
【问题描述】:

我有一个带有 AngularJS 1.6.5 和 NancyFX 服务器的 Visual Studio Community 2017 (15.2) 项目。

代码在这里:

https://github.com/GusBeare/NancyAngularTests

这是我学习和测试我想在实际项目中使用的功能的游乐场。

所有 AngularJS 的东西都在 Typescript 文件中,我的 tsconfig.json 告诉编译器将它们全部编译成一个 JS 文件 Content/js/bundle.js

当我构建和运行项目时,一切都按预期工作,没有任何问题。但是,如果我在应用程序运行时编辑 .ts 文件,则会出现以下错误:

angular.min.js:7 Uncaught Error: [$injector:nomod] 
http://errors.angularjs.org/1.6.5/$injector/nomod?p0=mySPA

保存时编译似乎工作正常,因为Content/js/bundle.js 是在保存时重建的。但是为什么我只在保存时编译时出现 Angular 错误?

我是在 AngularJS 代码中做错了什么,还是这是 Typescript/Visual Studio 的问题?

如果我构建和发布项目,它在 IIS 下运行良好,我无法破坏它。

【问题讨论】:

  • 我相信这与捆绑到 bundle.js 中的代码的顺序有关。当我在 VS 中构建项目时,会遵守 tsconfig.json 中的文件顺序。但是,当我运行项目并编辑 + 保存 .ts 文件并将“compileonSave”选项设置为 true 时,捆绑代码的顺序更改为其他破坏它的顺序。
  • 如果有时间我会尝试不同的捆绑方式。

标签: javascript angularjs visual-studio typescript tsc


【解决方案1】:

我注意到在 VS 之外,如果我使用 tsc 编译打字稿,那么我的 tsconfig.json 中的文件顺序得到遵守,所以我假设 VS 打字稿工具中有一个错误。

于是我去了https://www.microsoft.com/en-us/download/details.aspx?id=48593,发现刚刚发布了一个新版本(2.4.1)。

安装它为我解决了这个问题。 ts 编译器现在以指定的顺序读取文件并正确捆绑它们。

更新

不,我错了。它不是固定的。如果我构建项目,则它无法运行,因为它不遵守文件编译顺序。但是,当我直接编辑包并更改顺序,然后进一步编辑 .ts 文件时,bundle.js 会正确重建。但是如果我再次关闭项目并构建它是不正确的。 tsc 仍然可以在命令行上以正确的顺序进行捆绑。 这都是非常错误的。

更新 2

作为一种解决方法,我将 app.js 转换回 JS 并将其移出 ts 包。这现在首先在 bundle.js 之前加载,一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 2023-03-24
    • 2017-08-26
    相关资源
    最近更新 更多