我正在浏览Meteor教程(React版本)中的简单待办事项列表,我在下一节中写了一个拼写错误:
Tasks.insert({
text,
createdAt: new Date(), // current time
owner: Meteor.userID(),
username: Meteor.user().username,
});
在这种情况下,我的大写错误,Meteor功能应该是Meteor.userId()
。但是,即使调用的函数应该是未定义的,终端窗口中也不会抛出任何错误。我花了很长时间才发现这一点,我担心对于较大的应用程序,如果没有报告错误,很难找到这样的错误。
更有经验的用户可以与我分享为什么Meteor的设计不会将拼写错误报告为错误,并且可能会提供一些有关未来发现此类错误的提示吗?
答案 0 :(得分:1)
基本上有两个地方可以看到Meteor中的运行时错误。
如果您的代码可以从任何一方调用,那么您将在发生错误的一侧找到错误。
答案 1 :(得分:0)
这比Meteor更像是一个javascript问题。 JS本质上是一种运行时动态语言,在编译时无法知道在执行时不会定义Meteor.UserID。因此,在代码段实际运行之前,您不会收到错误。
解决此问题的一种方法是采用测试驱动的开发技术,在编写代码时编写测试,以确保在受控运行时环境(测试环境)中测试每段代码。如果您对该函数进行了单元测试,则会立即标记错误。
Meteor的测试能力仍然有点笨重,但最新版本要好得多。您可以在此处阅读有关其推荐做法的信息:https://guide.meteor.com/testing.html