我在我的流星项目中使用了momentjs:moment包。客户端moment(new Date())
呼叫效果很好。如果我在服务器端执行相同的调用,或者如果我在console.log(moment(new Date()));
中包含相同的调用,则会在此问题的底部出现错误。
如果我运行meteor shell
然后moment(new Date());
我也会收到错误(moment is not defined
)。但是,如果从shell中我将它包装在console.log(moment(new Date()));
中,它可以正常工作并打印到控制台。
知道我忘记了什么,或者我在这里做不到什么?
W20150318-19:55:45.885(-5)? (STDERR) TypeError: Property 'moment' of object #<Object> is not a function
W20150318-19:55:45.885(-5)? (STDERR) at Object._.extend.send_donation_email (app/server/methods/mandrill.js:37:25)
W20150318-19:55:45.885(-5)? (STDERR) at Object.Stripe_Events.charge.succeeded (app/server/lib/stripe_events.js:55:23)
W20150318-19:55:45.885(-5)? (STDERR) at [object Object].Router.route.where (app/both/router/router.js:238:48)
W20150318-19:55:45.885(-5)? (STDERR) at boundNext (packages/iron:middleware-stack/lib/middleware_stack.js:251:1)
W20150318-19:55:45.885(-5)? (STDERR) at runWithEnvironment (packages/meteor/dynamics_nodejs.js:108:1)
W20150318-19:55:45.885(-5)? (STDERR) at packages/meteor/dynamics_nodejs.js:121:1
W20150318-19:55:45.885(-5)? (STDERR) at [object Object].urlencodedParser (/Users/Bechard/.meteor/packages/iron_router/.1.0.7.1oysnq2++os+web.browser+web.cordova/npm/node_modules/body-parser/lib/types/urlencoded.js:69:27)
W20150318-19:55:45.885(-5)? (STDERR) at packages/iron:router/lib/router.js:277:1
W20150318-19:55:45.885(-5)? (STDERR) at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
W20150318-19:55:45.885(-5)? (STDERR) at [object Object].hookWithOptions (packages/iron:router/lib/router.js:276:1)
W20150318-19:55:45.885(-5)? (STDERR) at boundNext (packages/iron:middleware-stack/lib/middleware_stack.js:251:1)
W20150318-19:55:45.885(-5)? (STDERR) at runWithEnvironment (packages/meteor/dynamics_nodejs.js:108:1)
**更新:Meteor 1.1仍有此问题。 **
我已经缩小了它似乎工作的原因,然后停止工作。如果我让我的应用程序遇到错误,没有捕获它,那么时刻将停止工作。
为了测试这个,我开始使用Meteor,然后是Meteor Shell和moment(),它起作用了。然后我让我的应用程序调用一个不存在的函数,它始终抛出类似下面的错误。然后我再次从Meteor Shell运行了moment(),这一刻()不起作用。事件,如果我重新启动Meteor它仍然无法正常工作。我已经重新启动了计算机,但它仍然没有工作。
(STDERR) TypeError: Property 'customer.source.updated' of object #<Object> is not a function
W20150401-13:46:11.812(-5)? (STDERR) at [object Object].Router.route.where (app/both/router/router.js:254:48)
W20150401-13:46:11.812(-5)? (STDERR) at boundNext (packages/iron:middleware-stack/lib/middleware_stack.js:251:1)
W20150401-13:46:11.812(-5)? (STDERR) at runWithEnvironment (packages/meteor/dynamics_nodejs.js:108:1)
W20150401-13:46:11.812(-5)? (STDERR) at packages/meteor/dynamics_nodejs.js:121:1
W20150401-13:46:11.812(-5)? (STDERR) at [object Object].urlencodedParser (/Users/Bechard/.meteor/packages/iron_router/.1.0.7.1oysnq2++os+web.browser+web.cordova/npm/node_modules/body-parser/lib/types/urlencoded.js:69:27)
W20150401-13:46:11.812(-5)? (STDERR) at packages/iron:router/lib/router.js:277:1
W20150401-13:46:11.812(-5)? (STDERR) at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
W20150401-13:46:11.812(-5)? (STDERR) at [object Object].hookWithOptions (packages/iron:router/lib/router.js:276:1)
W20150401-13:46:11.812(-5)? (STDERR) at boundNext (packages/iron:middleware-stack/lib/middleware_stack.js:251:1)
W20150401-13:46:11.813(-5)? (STDERR) at runWithEnvironment (packages/meteor/dynamics_nodejs.js:108:1)
答案 0 :(得分:3)
我今天花了太长时间处理这个问题。当我遇到这个问题时,我刚刚更新到Meteor 1.0.4.1(虽然对我来说,问题是时刻范围找不到moment
以扩展它)。尝试恢复到Meteor 1.0.3.2并查看问题是否仍然存在。
更新:
我刚刚将Meteor升级到1.0.5,问题可能已经消失了。如果您尝试升级自己的应用,请在下面发布,如果它也为您解决了问题。谢谢!
答案 1 :(得分:0)
此问题是Meteor在shell环境中重新加载自身的方式中的错误,并在Meteor 1.2中得到修复。对于相关的错误修复信息,您可以使用Git Commit 2e43a9和ae8395或Meteor Issue #4010或#4109。
MomentJS Issue 2285跟踪了这个问题。