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 に答える