Typescript/RequireJS与MVC应用程序有问题
我在Visual Studio中的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)
/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完全无关,但不久将发布它。