我通过以下链接执行了angular2快速启动项目:https://angular.io/guide/quickstart。唯一不同的是我在app.component.ts中添加代码var fs = require('js')
,它可以工作。但是,当我为该组件编写Jasmine单元测试时,它会显示require is not defined
,是否有人知道如何解决该问题?
注意:
我在整个项目中使用打字稿。
我尝试添加节点类型定义,但它没有修复错误。
这是我的代码: 单元tests.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Ng App Unit Tests</title>
<link rel="stylesheet" href="node_modules/jasmine-core/lib/jasmine-core/jasmine.css">
<script src="node_modules/jasmine-core/lib/jasmine-core/jasmine.js"></script>
<script src="node_modules/jasmine-core/lib/jasmine-core/jasmine-html.js"></script>
<script src="node_modules/jasmine-core/lib/jasmine-core/boot.js"></script>
...
</head>
<body>
<!-- Unit Testing Chapter #1: Proof of life. -->
<script src="app/app.component.spec.js"></script>
</body>
</html>
答案 0 :(得分:0)
您需要包含SystemJS并导入规范。
类似的东西:
<script src="~/node_modules/systemjs/dist/system.js" type="text/javascript"></script>
<script>
System.config({
baseURL: '/app'
});
System.import('app.component.spec')
.then(null, console.error.bind(console));
</script>
答案 1 :(得分:0)
您的代码缺少此关键字,即所有类成员都需要的打字稿。
将您的组件更改为:
import {Component} from 'angular2/core';
@Component({
selector: 'my-app',
template: '<h1>My First Angular 2 App</h1>'
})
export class AppComponent {
constructor() {
this.testReq();
}
testReq(str: string): string {
/* var fs = require('fs');
var str = '123';
return str;*/
}
}
我认为你在这里误解了一些事情。 FS是用于处理文件系统的节点库。当您处于Node过程中时,这种方法非常出色,但在您的示例中,您并非如此。您正在浏览器进程中运行,因此您无权访问任何节点库。