- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试将 Angular Universal 添加到我的 Angular Firebase 应用中。我一直在关注这个 video .但需要进行一些更改才能使其与云功能一起使用。
我在 angular-cli.config 中的“apps”数组中添加了一个额外的配置 block
// .angular-cli.config.json - "apps" [
{
"platform": "server",
"root": "src",
"outDir": "dist/server",
"assets": [
"assets",
"favicon.ico"
],
"index": "index.html",
"main": "main.server.ts",
"test": "test.ts",
"tsconfig": "tsconfig.server.json",
"testTsconfig": "tsconfig.spec.json",
"prefix": "app",
"serviceWorker": false,
"styles": [
"styles/styles.scss"
],
"scripts": [],
"environmentSource": "environments/environment.ts",
"environments": {
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
}
接下来我还添加了一个名为 tsconfig.server.json 的附加文件
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"baseUrl": "./",
"module": "commonjs",
"types": []
},
"exclude": [
"test.ts",
"**/*.spec.ts"
],
"angularCompilerOptions": {
"entryModule": "app/app.server.module#AppServerModule"
}
}
然后我创建了一个额外的 app.server.module.ts
import { NgModule } from '@angular/core';
import { AppModule } from './app.module';
import { ServerModule, ServerTransferStateModule } from '@angular/platform-server';
import { ModuleMapLoaderModule } from '@nguniversal/module-map-ngfactory-loader';
@NgModule({
imports: [
AppModule,
ServerModule,
ServerTransferStateModule, // <-- needed for state transfer
ModuleMapLoaderModule // <-- needed for lazy-loaded routes,
],
declarations: []
})
export class AppServerModule {}
与上面的视频一样,代码被转译到浏览器应用程序和服务器应用程序的 dist 文件夹中。尽管我已经决定避免使用 webpack 创建 server.js 文件,而是决定将其作为 typescript 直接添加到我的云函数中。
ng build --prod && ng build --prod --app 1 --output-hashing=false
创造..
dist/browser
dist/server
我已将代码移至 cloud functions.js 而不是 server.js。但是,从 dist/server/main.bundle.js 导入我的服务器包将导致 firebase 部署过程出错。
// cloud functions code above...
// Causes Error: -> const { AppServerModuleNgFactory, LAZY_MODULE_MAP } = require('./../../dist/server/main.bundle');
// more cloud functions code below..
我收到的错误是:
i functions: preparing functions directory for uploading...
Error: Error occurred while parsing your function triggers.
project_root/node_modules/angular2-markdown/markdown/markdown.component.js:1
(function (exports, require, module, __filename, __dirname) { import { Component, ElementRef, Input } from '@angular/core';
dist/server/main.bundle.js 需要一个使用 es6 导入语法的 node_module。
dist/server/main.bundle.js -> require("angular2-markdown.. -> markdown.component.js:1 -> import <-- { 组件,
我已经尝试让函数 tsconfig.json 将输出带到 es5,但我不认为它可以操纵 node_module .js 依赖项成为较低的 js。 (node_modules 比 functions 文件夹中的 node_modules 高一级文件夹 - (dist 文件夹也比 functions 文件夹高一级))
函数/tsconfig.json
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5", // <--- Trying to es5 the output
"typeRoots": [
"node_modules/@types",
"src/types-overwrite"
],
"lib": [
"es2017",
"dom"
]
}
}
我已经创建了一个示例 github 项目来下载和测试功能部署。
我还尝试将所有内容捆绑为 webpack_require 以转译 node_modules 以与 bundle 内联,而不是使用 webpack 被要求,但出现了错误:
TypeError: o.initStandalone is not a function
我相信它来自所依赖的 firebase node_module,但我无法证实这一点。 (此错误仅出现在我自己正在处理的项目中,并且很难确定示例项目中要包含哪些 node_module 才能使用 webpack 获得这些相同的错误结果)。
下面显示的是我在函数中使用的 webpack 配置:
var path = require('path');
module.exports = {
entry: './src/index.ts',
target: 'node',
output: {
filename: 'index.js',
path: path.resolve(__dirname, 'lib')
},
mode: 'none',
devtool: 'source-map',
plugins: [],
resolve: {
extensions: ['.ts', '.tsx', '.js', '.json']
},
module: {
rules: [
{ test: /\.tsx?$/, loader: 'ts-loader' },
]
},
};
在函数文件夹中时,您可以使用以下方法生成捆绑代码:
webpack --config webpack.config.js --colors --progress
并在 firebase.json 中使用 firebase 的 typescript 函数删除预部署代码:
{
"functions": {
"predeploy": [
// remove this..
// -> "npm --prefix \"$RESOURCE_DIR\" run lint",
// -> "npm --prefix \"$RESOURCE_DIR\" run build"
]
}
}
最佳答案
当使用 firbase 工具时,您可以在初始化期间创建函数/索引文件的 ts 版本。
$ npm install -g firebase-tools
$ firebase init
在设置选项中,为函数目录选择 ts 选项而不是 js。
关于angular - 如何让 Angular Universal 为 Firebase Cloud Functions 编译 Typescript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51016277/
请帮助我了解如何在 Angular Universal 中使用服务器渲染。 我做了什么。我访问了 Angular Universal 官方网站。设置 Node.js。下载推荐项目 Angular 2
我正在研究使用 explicit universes 的可能性用于在 Coq 中构建固定的 Universe 层次结构。在构建它时使用常量 (2, 3, 4) 的尝试失败了:最后,所有组合仍然类型检查
我查看了 Universal Analytics,但没有找到问题的正确答案。 如何将这一行从旧的 Analytics 更新到新的 Universal Analytics? _gaq.push(["_s
我在 IIS 中部署 angular 通用应用程序时遇到问题。在 angular 通用中,创建了两个 dist 文件夹,一个是客户端的 dist,另一个是 dist-server,当我尝试托管时,我提
我使用@ng-toolkit/universal 作为我的服务器端渲染方法。一切正常,没有我的图像。我正在动态地获取它们。因此,当用户没有头像时,会显示一个占位符图像。因此我正在使用这个函数: ver
-编译应用程序后,我多次收到此错误 enter image description here 文本错误: 错误错误 at XMLHttpRequest.send (C:\Users\seva-
我正在Win10中使用VS2015开发通用应用程序。模拟器和android模拟器运行正常。 但是,当我启动Windows Phone Mobile模拟器时,该模拟器运行并显示“操作系统正在启动”,然后
我正在实现一个路由保护(CanActivate 接口(interface)),我需要在某些条件下重定向到未找到的页面。这可以通过以下语句来实现: if (isNode){ let res : Resp
我偶然发现了一个奇怪的情况,其中有 reflect.runtime.universe._进口原因reflect.runtime.universe.RuntimeClass推断它似乎在哪里Nothing
每当我在我的应用程序中加载图像时,我的 logcat 都会给我这条消息。 04-09 19:09:59.241: W/ImageLoader(276): Try to initialize Image
我正在尝试添加包但出现错误 meteor add universe:carousel => Errors while adding packages: 选择软件包版本时: error: Confli
所以我一直在尝试将我的应用程序转换为 angular universal,并且在大多数情况下都很好。但我之前读过一些“陷阱”:https://github.com/onespeed-articles/
我有一个指令,使文本输入到谷歌的地方自动完成输入,看起来像: import { Directive, AfterViewInit , Output, EventEmitter, NgZone, Ele
大约一年前,我们升级到了通用Analytics(分析),由于升级我们的站点搜索并没有在我们的Analytics(分析)帐户中显示关键字,甚至没有跟踪其使用次数。 作为营销人员,这是一个问题,因为我想知
我正准备使用 Angular Universal 为我的 Angular 7 应用程序设置 SSR。我遵循了官方文档( https://angular.io/guide/universal )。我到了
在应用程序关闭(暂停)后,我正在将一个不大于 10KB 的数据文件写入 RoamingFolder。该应用程序在开发桌面和 Surface 2 上运行,两者都登录到同一个 Microsoft 帐户。但
This question already has answers here: Page Navigation using MVVM in Store App (5个答案) 6年前关闭。 使用MVVM
我尝试安装iOS-Universal-Framework 。尝试运行instalation shell screept从这个存储库并始终获取消息: iOS Real Static Framework
这就是我目前初始化 chromedriver 的方式 System.setProperty("webdriver.chrome.driver", "C://chromedriver.exe"); 但是
您好,我在尝试运行 perl 脚本时遇到以下错误: pc:~/Phd/lenovo/programs/vep/scripts/variant_effect_predictor$ perl varian
我是一名优秀的程序员,十分优秀!