【问题标题】:Building angular application and putting on the server构建 Angular 应用程序并放在服务器上
【发布时间】:2019-01-08 07:15:12
【问题描述】:

我正在开发一个 angular6 应用程序,我想生成一个构建以在我的服务器上进行测试,目前我使用 ng 服务器,它在我的浏览器上运行而不会产生任何错误。

c:\Users\emiry\Desktop\Angular\Projects\StartingNewProject

当我运行 ng build 命令时,它会为 /dist 文件夹生成一个构建并且不返回任何错误

在我的机器上我已经安装了wamp64,所以我得到了这个由 ng 生成的构建并将它放在我的 www 文件夹中

C:\wamp64\www\StartingNewProject

这足以让我能够在服务器上运行我的应用程序吗?

当我尝试通过 http://localhost/startingnewproject/ 访问服务器上的应用程序时

它在浏览器控制台中返回以下错误

加载资源失败:服务器响应状态为 404 (未找到)polyfills.js:1 加载资源失败:服务器 响应状态为 404(未找到)styles.js:1 加载失败 资源:服务器响应状态为 404(未找到) vendor.js:1 加载资源失败:服务器响应 状态 404 (Not Found) main.js:1 加载资源失败: 服务器响应状态为 404(未找到)

angular.json

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "StartingNewProject": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "prefix": "app",
      "schematics": {},
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/StartingNewProject",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "src/tsconfig.app.json",
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            "styles": [
              "src/styles.css",
              {
                "input": "./node_modules/bootstrap/dist/css/bootstrap.css"
              }
            ],
            "scripts": []
          },
          "configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true
            }
          }
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "StartingNewProject:build"
          },
          "configurations": {
            "production": {
              "browserTarget": "StartingNewProject:build:production"
            }
          }
        },
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
            "browserTarget": "StartingNewProject:build"
          }
        },
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "main": "src/test.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "src/tsconfig.spec.json",
            "karmaConfig": "src/karma.conf.js",
            "styles": [
              "src/styles.css"
            ],
            "scripts": [],
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ]
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": [
              "src/tsconfig.app.json",
              "src/tsconfig.spec.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    },
    "StartingNewProject-e2e": {
      "root": "e2e/",
      "projectType": "application",
      "architect": {
        "e2e": {
          "builder": "@angular-devkit/build-angular:protractor",
          "options": {
            "protractorConfig": "e2e/protractor.conf.js",
            "devServerTarget": "StartingNewProject:serve"
          },
          "configurations": {
            "production": {
              "devServerTarget": "StartingNewProject:serve:production"
            }
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": "e2e/tsconfig.e2e.json",
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    }
  },
  "defaultProject": "StartingNewProject"
}

package.json

{
  "name": "starting-new-project",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^6.0.3",
    "@angular/common": "^6.0.3",
    "@angular/compiler": "^6.0.3",
    "@angular/core": "^6.0.3",
    "@angular/forms": "^6.0.3",
    "@angular/http": "^6.0.3",
    "@angular/platform-browser": "^6.0.3",
    "@angular/platform-browser-dynamic": "^6.0.3",
    "@angular/router": "^6.0.3",
    "@ng-bootstrap/ng-bootstrap": "^2.0.0-alpha.0",
    "@ng-bootstrap/schematics": "^2.0.0-alpha.1",
    "bootstrap": "^4.0.0",
    "core-js": "^2.5.4",
    "jshint": "^2.9.5",
    "rxjs": "^6.0.0",
    "zone.js": "^0.8.26"
  },
  "devDependencies": {
    "@angular/compiler-cli": "^6.0.3",
    "@angular-devkit/build-angular": "~0.6.8",
    "typescript": "~2.7.2",
    "@angular/cli": "~6.0.8",
    "@angular/language-service": "^6.0.3",
    "@types/jasmine": "~2.8.6",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "~8.9.4",
    "codelyzer": "~4.2.1",
    "jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~1.7.1",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.0",
    "karma-jasmine": "~1.1.1",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.3.0",
    "ts-node": "~5.0.1",
    "tslint": "~5.9.1"
  }
}

我尝试如下访问

file:///C:/wamp64/www/StartingNewProject/index.html

5index.html:13 GET file:///C:/runtime.js 0 () /C:/favicon.ico:1 GET file:///C:/favicon.ico 0 () translate.google.com/gen204?nca=te_li&client=te_lib&logld=vTE_20180625_00:1 得到 file://translate.google.com/gen204?nca=te_li&client=te_lib&logld=vTE_20180625_00 0()

file:///C:/wamp64/www/StartingNewProject/index.html

GET file:///C:/runtime.js 0 () /C:/favicon.ico:1 GET file:///C:/favicon.ico 0 ()

当我尝试访问根目录查看文件夹和文件时,我可以完美,问题是当我加载 index.html 时

【问题讨论】:

  • 如果您将C:\wamp64\www\StartingNewProjectC:\wamp64\www\StartingNewProject\index.html 粘贴到浏览器中,是否会加载应用程序?
  • 您好,我尝试访问但遇到了一些问题,我将得到的结果放在问题中
  • 好的,所以看起来至少可以找到文件,这很好。您是否检查过您的 wamp64 服务是否正在运行并且是否正确配置了 apache?
  • 是的,在我的 wamp 中,我也有我的 api 来连接我的 angular 项目,当我执行 ng services 时,我可以正确访问 api
  • 如果您只是浏览到http://localhost,WampServer 主页会显示吗? (不是你的 Angular 主页)

标签: angular build angular6 ng-build


【解决方案1】:

项目遇到的问题是试图找到它的依赖项。 Angular 项目的 index.html 文件应包含如下标签:

<base href="/">

或类似的。这意味着,当它查找依赖项时,它会查找相对于根的。在您的情况下,根目录(即本地主机)旁边没有,它们位于StartingNewProject

您可以使用ng build --prod --base-href=/StartingNewProject/ 生成一个新版本,它将为您添加基本的href 标记。请注意,在此处包含前导斜杠和尾随斜杠很重要。

更多细节可以在 Angular 文档中找到,here

【讨论】:

  • 很抱歉,我不明白在哪里可以找到这个
  • 是的,您可以运行该构建命令而无需手动更改 HTML
  • 我运行 ng build 命令 -base-href = / StartingNewProject 当我转到 http://localhost/startingnewproject / 它返回给我 GET http://localhost/runtime.js 404(不是找到)
  • 如果手动打开C:/wamp64/www/StartingNewProject/index.html,能看到&lt;base&gt;这个html标签吗? href 属性是否设置为 "/StartingNewProject"
  • 我只是手动添加了 index.html 文件,错误还在继续
【解决方案2】:

我也遇到了同样的问题。我使用./ 修复了这个问题。

<base href="/"> to <base href="./">

再次构建和部署。

【讨论】:

    【解决方案3】:

    在使用 Angular 11 时,您可能会收到“已弃用”警告

    ng build --prod --base-href=/StartingNewProject/
    

    您可以改为调整 angular.json。

    在 angular.json 文件中,像这样创建一个“baseHref”属性:

     "projects": {
       "your-project-name" : {
              "architect": {
                 "build": {
                   "options": {
                       "baseHref": "/your-relative-path/"
    

    这将更改生产和开发中的 URL。

    请注意,在您的链接中,始终使用这样的相对路径(代替“/”):

     <img class="top-bar__logo" src="./assets/images/picture1.svg" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多