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