2017-10-30 2 views
0

저는 Cordova 및 Typescript를 사용하여 하이브리드 응용 프로그램을 개발하고 있습니다. 데이터베이스에서 일부 데이터를 읽거나 업데이트하거나 저장하기 위해 Firebase을 통합해야합니다.Typescript, Firebase, Cordova : 'firebase'모듈을 찾을 수 없습니다.

내 문제는 Typescript에서 Firebase를 가져오고 사용하는 것입니다 (사용 된 프레임 워크 없음). 또한 localhost에서 테스트해볼 수 있습니다.

그래서, 이것은 내가 무엇을 가지고 :

webpack.config.js

module.exports = function(options) { 
    return { 
    [...] 
    resolve: { 
     extensions: ['.ts', '.js'], 
     alias: { 
     firebase: helpers.root('node_modules/firebase/firebase.js') 
     } 
    }, 
    [...] 
    module: { 
     rules: [ 
     { test: /\.ts$/, enforce: 'pre', loader: 'tslint-loader' }, 
     { test: /firebase\.js$/, loader: 'expose-loader?firebase' }, 
     { test: /\.ts$/, loader: 'ts-loader', exclude: '/node_modules/' }, 
     ] 
    } 
    } 
}; 

package.json

{ 
    [...] 
    "main": "src/ts/index.ts", 
    "devDependencies": { 
    [...] 
    "typescript": "2.2.2", 
    "firebase": "^4.6.0" 
    }, 
    "dependencies": { 
    "@types/firebase": "^2.4.32", 
    [...] 
    } 
} 

tsconfig.json

{ 
    "files": [ 
    "./src/ts/index.ts", 
    "./node_modules/@types/firebase/index.d.ts" 
    ] 
} 

Uncaught TypeError: __WEBPACK_IMPORTED_MODULE_2_firebase__ is not a constructor

, 당신이 나를 도울 수하십시오 : 나는 응용 프로그램을 실행하면 src/ts/index.ts

import * as firebase from "firebase"; 

export namespace Application { 

    export function initialize() { 
    const db = firebase.database(); 
    } 

} 

window.onload = function() { 
    Application.initialize(); 
}; 

, 그것은 콘솔에서 오류가 발생합니다?

업데이트 : : 쓸모없는 코드 줄을 삭제했습니다. @kevinSpaceyIsKeyserSöze에 따르면 Firebase 코드의 일부를 편집했습니다.

+0

[this] (https://firebase.google.com/docs/web/setup)을 먼저 확인한 다음 [mcve]를 만드십시오. '새로운 Firebase() '를 호출하는 것이 옳지 않은 것 같습니다 –

+0

먼저 [Firebase 데이터베이스 시작하기] (https://firebase.google.com/docs/database/web) 공식 문서를 읽어야합니다. /스타트). 그런 다음'firebase'에서 firebase로 import *하고 마지막으로 내부에서''const db = firebase.database()''를 생성하기 위해 컴포넌트 호출 데이터베이스 함수를 호출해야합니다. –

+0

글쎄, 인덱스에 Firebase SDK를 추가했습니다. html 및 가져온 firebase 모듈을'index.ts'에 저장합니다. 이제 'FirebaseStatic'유형에 '속성'데이터베이스 '가 존재하지 않습니다. –

답변

0

긴 문서와 연구와 몇 가지 시도 후,이 작업 솔루션입니다 : 모든

첫째, 당신은 typings가 설치되어 있어야합니다.

"files": [ 
    "./typings/index.d.ts" 
] 

을 물 : files 개체 아래에 tsconfig.json

  1. typings install github:typed-typings/npm-firebase
  2. typings install firebase
  3. npm i --save-dev firebase

그러면 : 쉘 및 유형을 열고 :

import * as firebase from "firebase"; 

export namespace Application { 

    export function initialize() { 
    const firebaseApp = firebase.initializeApp({ ...firebase config }); 
    const db = firebaseApp.database(); 
    } 

} 

window.onload = function() { 
    Application.initialize(); 
}; 

그게 전부입니다!

이렇게하면 Cannot find module for 'firebase'의 오류는 발생하지 않습니다.