0

这是我的项目结构:

├── app.html
├── app.js
├── packages/
│   └── accounts-ui-bootstrap-dropdown -> /Users/jon/.meteorite/packages/accounts-ui-bootstrap-dropdown/erobit/meteor-accounts-ui-bootstrap-dropdown/c8b29d2e7f8611d6dec9d6d23c1c2b94e000b0fb/
├── smart.json
└── smart.lock

`meteor list --using' 给出以下结果:

standard-app-packages
autopublish
insecure
preserve-inputs
accounts-ui-bootstrap-dropdown
bootstrap
accounts-password

app.html 如下:

<head>
  <title>app</title>
</head>

<body>
    {{> header}}
</body>

<template name="header">
    <header class="navbar">
        <div class="navbar-inner">
            <div class="nav-collapse collapse">
                <ul>
                    <li>{{loginButtons}}</li>
                </ul>
            </div>
        </div>
    </header>
</template>

app.js 如下:

Accounts.ui.config({ passwordSignupFields: 'USERNAME_AND_OPTIONAL_EMAIL' });

尝试启动应用程序时出现以下错误:

[[[[[ ~/dev/app ]]]]]

=> Meteor server running on: http://localhost:3000/
W202309-16:30:21.275(-4)? (STDERR) /Users/jon/.meteor/tools/3cba50c44a/lib/node_modules/fibers/future.js:173
W202309-16:30:21.365(-4)? (STDERR)                      throw(ex);
W202309-16:30:21.365(-4)? (STDERR)                            ^
W202309-16:30:21.366(-4)? (STDERR) TypeError: Cannot call method 'config' of undefined
W202309-16:30:21.366(-4)? (STDERR)     at app/app.js:1:48
W202309-16:30:21.366(-4)? (STDERR)     at app/app.js:24:3
W202309-16:30:21.367(-4)? (STDERR)     at mains (/Users/jon/dev/app/.meteor/local/build/programs/server/boot.js:153:10)
W202309-16:30:21.367(-4)? (STDERR)     at Array.forEach (native)
W202309-16:30:21.367(-4)? (STDERR)     at Function._.each._.forEach (/Users/jon/.meteor/tools/3cba50c44a/lib/node_modules/underscore/underscore.js:79:11)
W202309-16:30:21.367(-4)? (STDERR)     at /Users/jon/dev/app/.meteor/local/build/programs/server/boot.js:80:5
=> Exited with code: 1

我究竟做错了什么?

4

2 回答 2

1

Accounts.ui.config 仅在客户端可用(请参阅此处的文档),因此您需要将其使用包装在 Meteor.isClient 中。用这个替换你的 app.js 应该可以:

if(Meteor.isClient) {
  Accounts.ui.config({ passwordSignupFields: 'USERNAME_AND_OPTIONAL_EMAIL' });
}

或者,您可以创建一个名为“client”的文件夹和一个名为“server”的文件夹,Meteor 将知道如何在不使用 isClient 和 isServer 的情况下处理这些文件夹。

有关更多信息,请参阅文档中的“构建应用程序”或“我应该将文件放在哪里?” 在非官方常见问题解答中。

于 2013-10-09T22:34:32.730 回答
0

我收到此错误是因为我没有添加accounts-base 和account-ui。我刚刚添加了 accounts-[service] 包。一旦我添加了它们,错误就消失了,一切都很好。

于 2015-02-20T01:20:26.773 回答