在我的代码中,我正在使用javascript firebase模块
const FirebaseStore = require('connect-session-firebase')(session)
导入它并在打字稿中使用它的正确方法应该是什么?
答案 0 :(得分:0)
首先,您应该安装Connect Session Firebase
,我认为您已经完成了。
如果没有,请运行:npm install firebase-admin connect-session-firebase --save
现在已经安装了Connect Session Firebase
,您可以开始使用它了。
您还需要一个中间件...我更喜欢在Firebase中使用 Connect 中间件,也可以使用 Express 。
>安装连接非常简单,就像firebase:npm install connect
使用Connect Session Firebase
const connect = require('connect');
const FirebaseStore = require('connect-session-firebase')(connect);
const firebase = require('firebase-admin');
const ref = firebase.initializeApp({
credential: firebase.credential.cert('path/to/serviceAccountCredentials.json'),
databaseURL: 'https://linkToDatabase.com'
});
connect()
.use(connect.cookieParser())
.use(connect.session({
store: new FirebaseStore({
database: ref.database()
}),
secret: 'secret'
}));
答案 1 :(得分:0)
您的问题有两个方面,分别是语法和配置。
TypeScript中首选的模块语法是esModule样式:
import ... from ...
因此,代码的首选模块语法为:
// you can rename it whatever you like:
import connectSessionFirebase from 'connect-session-firebase'
const FirebaseStore = connectSessionFirebase(session)
事实检查:Node.js中的运行时模块系统是CommonJS样式。
require(...)
因此,当TypeScript转换为JavaScript时,您需要正确配置它以连接两个世界之间的桥梁。
以下是推荐的编译器配置,因为它最能容错。我会一一解释。
// tsconfig.json
{
// ...
"compilerOptions": {
"module": "commonjs",
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
// ...
}
}
"module": "commonjs"
此选项会影响代码发出。 <{1}} 必需,才能为使用CommonJS模块系统(在您的情况下为Node.js)的运行时环境发出JS代码。基本上,它告诉TS执行以下转换:
tsc
// input:
import * as lodash from "lodash" // case 1
import express from "express" // case 2
import React, { Component } from "react" . // case 3
// output:
var lodash = require("lodash");
var express_1 = require("express");
var react_1 = require("react");
var express = express_1.default;
var React = react_1.default;
var Component = react_1.Component;
此选项会影响代码发出。这是可选,但建议使用。它添加了两个运行时兼容性帮助程序"esModuleInterop": true
和__importDefault
。他们在运行时将CommonJS模块转换为伪ESModule。
有关这些助手的详细信息,请查看此Playground Link。
__importStar
此选项不影响代码发出。它仅影响TS类型检查行为,并且应与"allowSyntheticDefaultImports": true
一起使用。启用此选项将允许您默认导入none-ESModule模块。
例如,著名的"esModuleInterop": true
lib是仅CommonJS的模块,它没有默认导出。
express