Django无法加载角度块

Django无法加载角度块,django,angular,lazy-loading,Django,Angular,Lazy Loading,我正在尝试集成django和angular4,但在控制台中我得到了 错误:加载区块1失败 我知道问题是什么,但我无法解决 这是我的app.routing.ts import { Routes } from '@angular/router'; import { AdminLayoutComponent } from './layouts/admin/admin-layout.component'; import { AuthLayoutComponent } from './layouts/a

我正在尝试集成django和angular4,但在控制台中我得到了

错误:加载区块1失败

我知道问题是什么,但我无法解决

这是我的app.routing.ts

import { Routes } from '@angular/router';

import { AdminLayoutComponent } from './layouts/admin/admin-layout.component';
import { AuthLayoutComponent } from './layouts/auth/auth-layout.component';
export const AppRoutes: Routes = [{
  path: '',
  component: AdminLayoutComponent,
  children: [{
    path: '',
    loadChildren: './dashboard/dashboard.module#DashboardModule'
  }, {
    path: 'email',
    loadChildren: './email/email.module#EmailModule'
  }, {
    path: 'components',
    loadChildren: './components/components.module#ComponentsModule'
  }]
}, {
  path: '',
  component: AuthLayoutComponent,
  children: [{
    path: 'authentication',
    loadChildren: './authentication/authentication.module#AuthenticationModule'
  }, {
    path: 'error',
    loadChildren: './error/error.module#ErrorModule'
  }, {
    path: 'landing',
    loadChildren: './landing/landing.module#LandingModule'
  }]
}, {
  path: '**',
  redirectTo: 'error/404'
}];
它可以在没有子对象的情况下工作,但是延迟加载块不会在django中加载。
任何帮助都将不胜感激。

加载块失败延迟加载的问题可以通过设置部署url来解决。在正确的位置查找模块文件会有一定的难度

很长一段时间以来,我一直面临着这个问题。问题是我们使用django中的静态文件特性从s3 bucket在django中提供js和其他资产

为角度项目服务的步骤

  • 制作angular build并将其放入django静态文件文件夹中
  • 将index.html移动到templates文件夹
  • 使用django提供index.html,并根据django修改所有静态文件链接
  • 完成后,您的项目开始工作。但延迟加载的模块目前无法工作

    修复延迟加载

    惰性加载的文件由angular在内部加载,因为我们知道基本url是“/”,所以angular将尝试从127.0.0.1:8000/Lazy-module.ts加载文件。但是不存在这样的文件,因为它使用的是静态文件

    让我们看看js文件的url,它类似于127.0.0.1:8000/static/angular\u project\u build\u folder/lazy module.ts

    所以我们必须告诉angular在哪里查找模块文件,我们可以如下设置部署url

    angular.json

    architect": {
            "build": {
              "builder": "@angular-devkit/build-angular:browser",
              "options": {
                "deployUrl": "/static/angular_project_build_folder/",  
                  ---- Other Configuration ----
    
    "configurations": {
                "production": {
                  "fileReplacements": [
                    {
                      "replace": "src/environments/environment.ts",
                      "with": "src/environments/environment.prod.ts"
                    }
                  ],
                  "deployUrl": "your amazon s3 url/static/angular_project_build_folder/", 
    
    设置多个部署Url

    如果静态文件来自AmazonS3,则可以根据构建配置设置多个部署URL。下面是生产示例

    angular.json

    architect": {
            "build": {
              "builder": "@angular-devkit/build-angular:browser",
              "options": {
                "deployUrl": "/static/angular_project_build_folder/",  
                  ---- Other Configuration ----
    
    "configurations": {
                "production": {
                  "fileReplacements": [
                    {
                      "replace": "src/environments/environment.ts",
                      "with": "src/environments/environment.prod.ts"
                    }
                  ],
                  "deployUrl": "your amazon s3 url/static/angular_project_build_folder/", 
    

    您对
    baseHref
    使用的值是什么-看起来您使用的是“/”?那么
    APP\u BASE\u HREF
    DI令牌呢?您是否在
    app.module.ts
    中使用它?例如:
    providers:[{provide:APP_BASE_HREF,useValue:'/???'}]
    Hi,是的,我正在使用'/'作为baseHref,在应用模块中没有其他内容,所有设置都是默认的。这太奇怪了,我就是无法让延迟加载工作,不管我使用的是baseHref和deployUrl的什么组合。也就是说,除非index.html和惰性模块位于同一文件夹中。