Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SystemJS的ReferenceError_Javascript_Typescript_Systemjs - Fatal编程技术网

Javascript SystemJS的ReferenceError

Javascript SystemJS的ReferenceError,javascript,typescript,systemjs,Javascript,Typescript,Systemjs,我使用SystemJS作为一个模块系统来编译我的TypeScript文件,但每当我通过在浏览器中加载页面时,我都会遇到以下错误: ReferenceError: Sensor is not defined at (index):17 at <anonymous> 这是我的tsconfig.json文件: 我检查了输出文件,看起来传感器已定义: 编辑:我现在检查了,当我试图调用这些函数时,没有定义任何函数。我发现您的代码有两个问题。一个是您正在使用一个捆绑包,但您的代

我使用SystemJS作为一个模块系统来编译我的TypeScript文件,但每当我通过在浏览器中加载页面时,我都会遇到以下错误:

ReferenceError: Sensor is not defined
    at (index):17
    at <anonymous>
这是我的tsconfig.json文件:

我检查了输出文件,看起来传感器已定义:


编辑:我现在检查了,当我试图调用这些函数时,没有定义任何函数。

我发现您的代码有两个问题。一个是您正在使用一个捆绑包,但您的代码忽略了这一点。第二,您不是从模块中获取传感器类,而是从全局空间获取

在tsc生成的代码中,对System.register的调用将sensor作为第一个参数,这意味着您正在处理一个bundle。这种调用硬编码模块名,这里的模块名是传感器。SystemJS捆绑包可以使用脚本元素加载,因此您可以在加载SystemJS后添加以下内容:

<script src="dist/index.js"></script>

在这段代码中,我要求SystemJS加载名为sensor的模块,该模块与System.register使用的名称相同,我已将sensor添加到传递给的回调的参数列表中。然后将该类称为sensor.sensor。

感谢您的详细解释;我对模块这件事还不太熟悉,但现在我更了解它了!
{
    "compileOnSave": true,
    "compilerOptions": {
        "module": "system",
        "target": "es5",
        "outFile": "dist/index.js"
    },
    "files": [
        "./src/sensor.ts",
        "./src/signal.ts",
        "./src/signal_receiver.ts"
    ]
}
System.register("sensor", ["signal", "signal_receiver"], function (exports_3, context_3) {
    ...
    exports_3("Sensor", Sensor);
<script src="dist/index.js"></script>
SystemJS.import('sensor').then(function(sensor) {
  var textField = new sensor.Sensor(document.getElementById('textField')).setName('textField');
}).catch(function(err) { console.log(err); });