我正在使用require.js来组织我的js:
define([
'underscore',
'sylvester',
'glUtils',
'GLFacade',
'Item',
'Attribute',
'Buffer',
], function(
_,
sylv,
glUtils,
GLFacade,
Item,
Attribute,
Buffer
) {
"use strict";
function Sprite() { this.init.apply(this, arguments); }
_.extend(Sprite.prototype, {
init: function(prog, img, viewPort) {
this._frameNum = 0;
this._framesPerAnimation = 4;
this._prog = prog;
this._viewPort = viewPort;
this._img = new ImageWrapper(img);
//...other initialization stuff...
},
//...other methods...
});
return Sprite;
});
但我一直遇到错误,我忘记将模块添加到文件的顶部。上面我忘了将ImageWrapper
添加到我的依赖项中。当我执行此操作时,即使ImageWrapper
为undefined
,我的代码也会以无错误消息的方式静默失败。如果我尝试记录console.log(ImageWrapper)
,我确实会收到错误。
为什么对new ImageWrapper(img)
的构造函数调用失败并显示错误?是否有类似"use strict;"
的内容可用于在开发过程中增加错误信息?
答案 0 :(得分:1)
您可以使用像http://jshint.com/这样的工具来填充您的代码 - 您将得到类似的内容:
One undefined variable
27 ImageWrapper
根据您的设置,有不同的自动化方法,一些编辑器已经构建了这个,或者插件可以扩展此功能。如果要手动运行jshint,npm上还有一个命令行版本:https://npmjs.org/package/jshint
您的代码应该抛出错误,但前提是您实例化new Sprite
。
当我尝试像这样简化你的代码时
define('Sprite', ['underscore'], function(_) {
'use strict';
function Sprite() {
this.init.apply(this, arguments);
}
_.extend(Sprite.prototype, {
init: function() {
this._foo = new DoesntExist();
}
});
return Sprite;
});
require(['Sprite'], function(Sprite) {
var sprite = new Sprite();
});
它会按预期抛出ReferenceError。