【发布时间】:2017-06-04 17:30:30
【问题描述】:
我已经设置了一个新的 Web 项目,我想在其中开始工作/学习 TypeScript。这个项目虽然是一个空的 c#.net web 项目,但没有使用 MVC、angular 等。它只是普通的香草 html 和 Ts。在我开始设置模块(类、接口等)之前,一切都运行顺利。一旦我开始导出和导入模块,我开始在开发工具中收到错误Uncaught ReferenceError: require is not defined。查看实际的 js 文件,我可以看到它正在将文件的主体包装在 require() 中。
这个项目很小,如果可能的话,我不想设置 requireJs。有没有办法在 VS 中禁用 Ts 编译器以不插入 require() 函数? node.js 没有被使用,并且在项目属性中,我已将模块系统从 CommonJS 切换到 Es2015。
或者我在这里完全遗漏了什么,应该捆绑这些文件?
我将出口和进口声明为:
interface.ts
import {Category } from './enums';
interface ICar {
id: number;
make: string;
model: string;
vin?: string;
mileage?: number;
category: Category;
}
export { ICar }
枚举.ts
enum Category { Antique, Sportscar, Truck, SUV, Sedan };
export { Category };
在我的主文件 app.ts 的顶部,我引用了模块
import { Category } from './enums';
import { ICar } from './interfaces';
在我的主文件 app.js 中编译后的 js 输出在标题中包含此内容
"use strict";
var enums_1 = require("./enums");
感谢您的建议
【问题讨论】:
-
当您说“devtools”中出现错误时,您是在谈论 Visual Studio 还是在浏览器中?
-
@Chris 错误出现在 Chrome 开发工具的控制台部分。因此,我没有看到来自 console.log 等的实际输出,而是出现错误并且脚本停止运行。 Visual Studio 编译好 Ts
-
我的猜测是您编译的 typeScript 没有捆绑在一起。如果没有某种模块加载器,浏览器就不会运行模块。存在许多解决方案,systemJS、WebPack、Gulp……甚至是 .net 自己的脚本捆绑器。您需要让帮助程序加载模块,或者您需要将所有模块放入一个脚本中。
标签: typescript visual-studio-2015 requirejs bundling-and-minification