Ionic - Runtime Ошибка: объект (...) не является функцией - PullRequest
0 голосов
/ 27 июня 2018

У меня есть очень простой проект:

https://github.com/napolev/ionic-start

, который в основном является Ionic стартовым проектом:

// https://ionicframework.com/getting-started
$ ionic start ionic-start tabs

Я добавил следующие два файла:

/ SRC / дополнительные / социал- media.ts

import * as Promise from 'bluebird';
import { User } from './user';

export var LoginPromise = function(service): Promise<string> {
    return new Promise((resolve) => {
        setTimeout(function(){
            resolve('Will Smith');
        }, 2000)
    });
};

//*/ IF I COMMENT THIS BLOCK OUT, THERE IS NO ERROR
// this function is not used by this project
// but for some specific reasons it is required to be here
// this code is a simplification of a bigger project
export var callMeIfYouNeedMe = function(id) {
    return new Promise((resolve) => {
        User.findById(id, function(err, user) {
            console.log(user);
            resolve(user);
        });
    });
}
// END OF BLOCK */

/ SRC / дополнения / user.ts

import { Document, Schema, Model, model} from "mongoose";

export interface IUser {
    name: string;
}
export interface IUserDocument extends IUser, Document {

}
export var UserSchema: Schema = new Schema({
    name: String,
});

export const User: Model<IUserDocument> = model<IUserDocument>("User", UserSchema);

Код справа выше работает правильно на проекте узла (я пробовал сам). Я получил это от: http://brianflove.com/2016/10/04/typescript-declaring-mongoose-schema-model/#schema--model С последним экспортом я создаю модель типа: IUserDocument.

Я также изменил следующие два файла:

/ SRC / страницы / главная / home.ts

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { LoginPromise } from '../../extras/social-media';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  constructor(public navCtrl: NavController) {

  }

  test() {
    console.log('Hello World');
    LoginPromise('facebook').then(
      (name: string) => {
        console.log('### Social Media -> ' + name);
      }
    );
  }

}

/ SRC / страницы / главная / home.html

<ion-header>
  <ion-navbar>
    <ion-title>Home</ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding>
  <h2>Welcome to Ionic!</h2>
  <p>
    This starter project comes with simple tabs-based layout for apps
    that are going to primarily use a Tabbed UI.
  </p>
  <p>
    Take a look at the <code>src/pages/</code> directory to add or change tabs,
    update any existing page or create new pages.
  </p>

  <button ion-button (click)="test()" color="primary">Test</button>

</ion-content>

Моя проблема в том, что когда я запускаю:

$ ionic serve --no-open

Я не получаю никакой ошибки на консоли, но в браузере я получаю следующее:

"Runtime Error: Object(...) is not a function"

как вы можете видеть здесь:

enter image description here

Есть ли у вас какие-либо идеи о том, что здесь может происходить и как я могу сделать эту работу?

Спасибо!

1 Ответ

0 голосов
/ 27 июня 2018

Ошибка выполнения: объект (…) не является функцией

Ваш звонок:

model<IUserDocument>("User", UserSchema);

неправильно. model не является функцией. Это объект.

Fix

Не вызывать объект. Код неверный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...