Typescript/RequireJS与MVC应用程序有问题

Typescript/RequireJS与MVC应用程序有问题,requirejs,typescript,Requirejs,Typescript,我在Visual Studio中的MVC应用程序中有以下代码: /scripts/bin/models/ViewModel.ts export class ViewModel { // view model code } 现在,我已经下载了requirejs,并将typescript的构建模式设置为AMDtype,这样它的输出看起来像 define(["require", "exports"], function(require, exports)

我在Visual Studio中的MVC应用程序中有以下代码:

/scripts/bin/models/ViewModel.ts

export class ViewModel {
  // view model code
}
现在,我已经下载了
requirejs
,并将typescript的构建模式设置为
AMD
type,这样它的输出看起来像

define(["require", "exports"], function(require, exports) {
等等

然后我像这样声明我的
app/config.js
文件

require.config({
    baseUrl: '/scripts/bin'
});
我试着加载它,我把requirejs加载到脚本中,并尝试调用它

require(['models/ViewModel'], function (viewModel) {
        console.log("test");
});
我只是被告知这是一个无效的电话。没有其他细节。它显示的路径也是完全正确的。是否需要某种附加配置?requirejs文档对此非常模糊

解决方案 这与
requirejs
无关,而是与IIS有关


默认情况下,IIS有一个称为
hiddenSegments
的规则。它不允许您从路径中包含
bin
的文件夹中引入任何代码。我只是将文件夹从
bin
重命名为其他名称,它工作正常。

TypeScript编译器不知道您的
require.config
-因此,当您使用相对于该baseUrl的路径时,它们对编译器来说似乎无效

在采取措施消除轻微的不匹配之前(即,使编译器变得超级聪明,以便它可以查找
require.config
节并使用它们检查路径),不设置baseUrl并在导入语句中使用完整路径更容易:

import vm = require('./scripts/bin/models/ViewModel');

您确定require调用是通过
[]
完成的,而不仅仅是

require('models/ViewModel', function (viewModel) {  // this is an error 
        console.log("test");
});

请参阅:

将require.js与TypeScript结合使用是.html、require.config、模块导出和导入的组合。 有关从CommonJs TypeScript到AMD和require.js的逐步指南,请看一看
玩得开心。

哦,不,typescript文件中的require导入是有效的,我说的是尝试在其他任何地方使用它。例如,在我的
\u Layout.cshtml
中,我有一行代码试图调用视图模型,它只是告诉我该文件不存在-它甚至为它提供了正确的路径。该指南有点帮助,尽管它证明我的问题与requireJS完全无关,但不久将发布它。