【发布时间】:2021-03-08 19:58:08
【问题描述】:
我正在训练使用本教程添加 Angular 服务器端重绘: https://angular.io/guide/universal
我正在使用 i18n 翻译 + 材料 + firebase。
由于错误,最初我不得不更改 server.ts 文件以指向正确的目录 (dist/browser/it):
Error: Failed to lookup view "index" in views directory "C:\Data\Development\Web\Wor
kingHours4bWeb\dist\WorkingHours4bWeb\browser"
at Function.render (C:\Data\Development\Web\WorkingHours4bWeb\dist\WorkingHours4
bWeb\server\main.js:128813:17)
at ServerResponse.render (C:\Data\Development\Web\WorkingHours4bWeb\dist\Working
Hours4bWeb\server\main.js:244414:7)
at C:\Data\Development\Web\WorkingHours4bWeb\dist\WorkingHours4bWeb\server\main.
js:373787:13
at Layer.handle [as handle_request] (C:\Data\Development\Web\WorkingHours4bWeb\d
ist\WorkingHours4bWeb\server\main.js:180406:5)
at next (C:\Data\Development\Web\WorkingHours4bWeb\dist\WorkingHours4bWeb\server
\main.js:133160:13)
at Route.dispatch (C:\Data\Development\Web\WorkingHours4bWeb\dist\WorkingHours4b
Web\server\main.js:133135:3)
at Layer.handle [as handle_request] (C:\Data\Development\Web\WorkingHours4bWeb\d
ist\WorkingHours4bWeb\server\main.js:180406:5)
at C:\Data\Development\Web\WorkingHours4bWeb\dist\WorkingHours4bWeb\server\main.
js:413002:22
at param (C:\Data\Development\Web\WorkingHours4bWeb\dist\WorkingHours4bWeb\serve
r\main.js:413075:14)
at param (C:\Data\Development\Web\WorkingHours4bWeb\dist\WorkingHours4bWeb\serve
r\main.js:413086:14)
现在我的标签正在加载而没有给出任何结果,调试器中没有错误,只加载无限时间并且没有页面结果。我也尝试调试命令npm run dev:ssr,但我没有任何错误。
(加载中)
这是我的 package.json:
{
"name": "working-hours4b-web",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"start0000": "ng serve --host 0.0.0.0 --disable-host-check",
"dev:ssr": "ng run WorkingHours4bWeb:serve-ssr",
"serve:ssr": "node dist/WorkingHours4bWeb/server/main.js",
"build:ssr": "ng build --prod && ng run WorkingHours4bWeb:server:production",
"prerender": "ng run WorkingHours4bWeb:prerender"
},
"private": true,
"dependencies": {
"@angular/animations": "~11.0.5",
"@angular/cdk": "^11.0.3",
"@angular/common": "~11.0.5",
"@angular/compiler": "~11.0.5",
"@angular/core": "~11.0.5",
"@angular/fire": "^6.1.4",
"@angular/flex-layout": "^11.0.0-beta.33",
"@angular/forms": "~11.0.5",
"@angular/http": "^7.2.16",
"@angular/localize": "~11.0.5",
"@angular/material": "^11.0.3",
"@angular/platform-browser": "~11.0.5",
"@angular/platform-browser-dynamic": "~11.0.5",
"@angular/platform-server": "~11.0.5",
"@angular/router": "~11.0.5",
"@js-joda/core": "^3.2.0",
"@js-joda/extra": "^0.4.0",
"@js-joda/locale": "^3.2.2",
"@ng-bootstrap/ng-bootstrap": "^8.0.0",
"@nguniversal/express-engine": "^11.1.2",
"bootstrap": "^4.5.0",
"chart.js": "^2.9.4",
"chartjs-plugin-datalabels": "^0.7.0",
"date-fns": "^2.16.1",
"express": "^4.15.2",
"firebase": "^8.2.1",
"lodash": "^4.17.20",
"materialize-angular": "^0.7.10",
"materialize-css": "^1.0.0",
"ng-inline-svg": "^11.0.1",
"ng2-charts": "^2.4.2",
"ngx-color-picker": "^11.0.0",
"rxjs": "~6.6.0",
"tslib": "^2.0.0",
"uuid": "^8.3.2",
"zone.js": "~0.10.2"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.1100.5",
"@angular/cli": "~11.0.5",
"@angular/compiler-cli": "~11.0.5",
"@nguniversal/builders": "^11.0.1",
"@types/express": "^4.17.0",
"@types/jasmine": "~3.6.0",
"@types/node": "^12.11.1",
"@typescript-eslint/eslint-plugin": "^4.11.1",
"@typescript-eslint/parser": "^4.11.1",
"codelyzer": "^6.0.0",
"eslint": "^7.16.0",
"eslint-config-airbnb-base": "^14.2.1",
"eslint-plugin-import": "^2.22.1",
"jasmine-core": "~3.6.0",
"jasmine-spec-reporter": "~5.0.0",
"karma": "~5.1.0",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage": "~2.0.3",
"karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "^1.5.0",
"protractor": "~7.0.0",
"ts-node": "~8.3.0",
"typescript": "~4.0.2"
}
}
有什么办法可以看到具体的错误吗?
【问题讨论】:
-
我认为你的错误是非常自我解释的。它可以在
C:\Data\Development\Web\Wor kingHours4bWeb\dist\WorkingHours4bWeb\browser中找到索引 -
嗨 robin,这个错误通过对 server.ts 的一点改动得到了解决。现在,当它最终找到路径时,我得到了无限加载
-
你在哪里没有错误(浏览器/终端)?
-
不,因为没有加载,我也尝试调试 SSR(我正在使用 webstorm),但我不能在 server.ts 中换行。我已经创建了一个新的测试项目并且它正在工作(仅通过包含 package.json 中的所有库),只要我包含使用 Material、Firebase 数据库和 Crashlytics 的其他源,我就明白了。似乎找到问题的唯一方法是一次包含一个项目。
-
您的组件是否调用 API 进行渲染?取决于您的服务器配置,API 调用可能永远不会结束……您可以连接到您的服务器,并尝试调用 Angular Universal 尝试调用的 URL 吗?请注意,当您进行 SSR 时,您必须确保服务器和浏览器都能够解析每个调用...
标签: angular typescript angular-material internationalization server-side-rendering