ChatGPT解决这个技术问题 Extra ChatGPT

角度:无法获取/

我正在尝试打开、构建和运行其他人的 Angular 4 项目,但是当我以自己的方式运行时,我无法查看该项目。我不知道出了什么问题或我现在应该做什么。我已经准备好使用 NPM 和 NodeJS

我采取的步骤是:

打开项目

npm 安装

服务

该项目以正确的方式编译。 (我有一个自己的 Angular 应用程序,我知道它的样子)控制台显示:

'** NG Live Development Server 正在监听 localhost:4200,在 http://localhost:4200 上打开浏览器 **'。

然后,当我打开一个网络浏览器时,我导航到 localhost:4200 并显示了一个包含以下文本的网页:

'不能获取 /'

控制台上有以下文字:

'GET http://localhost:4200/404(未找到)'

该项目应该可以正常工作,但我无法导航到网页上的工作 URL。路由设置是另一种方式,因为我习惯这样做。在 app.module.ts 中实现了以下内容:

app.module.ts

const appRoutes: Routes = [
{ path: '',   redirectTo: 'tree', pathMatch: 'full' },
{ path: 'admin', component: AdminPanelComponent, canActivate: [AuthGuard],
children: [{path:'', component: PanelComponent},{path: 'add', component: 
AddTreeComponent}, {path:'manage-trees', component:ManageTreesComponent}, 
{path:'manage-users', component: ManageUsersComponent}, {path:'view-trees', 
component: ViewTreeComponent}]},
{path:'tree', component: TreeComponent},
{path:'error', component: ErrorComponent},
{path:'unauthorized', component: UnauthorizedComponent},
{path:'login', component: LoginComponent},
{path:'entire-tree', component: EntireTreeComponent},
{ path: '**', component: PageNotFoundComponent },
];

还打开了一个网页,例如; localhost:4200/tree 不起作用。当我让 Angular 停止为网页提供服务时,网页显示:“无法访问此站点”。所以我认为 localhost:4200 正在运行一些东西......此外,此人的另一个项目的行为方式相同.

https://i.stack.imgur.com/PKZlU.png

有人知道发生了什么吗?

编辑

app.module.ts

RouterModule.forRoot(appRoutes, { useHash: true })

包.json

{
"name": "xxx",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "^4.0.0",
"@angular/common": "^4.0.0",
"@angular/compiler": "^4.0.0",
"@angular/core": "^4.0.0",
"@angular/forms": "^4.0.0",
"@angular/http": "^4.0.0",
"@angular/platform-browser": "^4.0.0",
"@angular/platform-browser-dynamic": "^4.0.0",
"@angular/router": "^4.0.0",
"angular-oauth2-oidc": "^1.0.20",
"angular-polyfills": "^1.0.1",
"angular2-jwt": "^0.2.3",
"angular2-spinner": "^1.0.10",
"bootstrap": "^3.3.7",
"core-js": "^2.4.1",
"ngx-bootstrap": "^1.8.0",
"rxjs": "^5.1.0",
"zone.js": "^0.8.4"
},
"devDependencies": {
"@angular/cli": "1.2.4",
"@angular/compiler-cli": "^4.0.0",
"@angular/language-service": "^4.0.0",
"@types/jasmine": "2.5.45",
"@types/node": "~6.0.60",
"codelyzer": "~3.0.1",
"jasmine-core": "~2.6.2",
"jasmine-spec-reporter": "~4.1.0",
"karma": "~1.7.0",
"karma-chrome-launcher": "~2.1.1",
"karma-cli": "~1.0.1",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"karma-coverage-istanbul-reporter": "^1.2.1",
"protractor": "~5.1.2",
"ts-node": "~3.0.4",
"tslint": "~5.3.2",
"typescript": "~2.3.3"
 }
}

我还在标签名称旁边看到一个带有标签的图标:“错误”。

观察:

新观察:

运行 npm install -g angular-cli 后,我无法运行 ng serve。 (您必须在 angular-cli 项目中才能在重新安装 angular-cli 后使用 build 命令)

然后我运行 npm install -g @angular/cli@latest 并且能够再次使用 ng serve

观察 2:

使用“ng build ...”构建应用程序后,“dist”文件夹中没有 index.html...当我将网站设置为在线时,只有一个文件夹结构,而不是一个不错的网站。我认为那是因为没有 index.html。

嘿,你能显示 package.json 文件吗?
试图导航 http://localhost:4200/#
好问题 AnteJablanAdamović。不幸的是,这给出了相同的结果。与:localhost:4200/#/tree 相同
没有完整的代码很难说,但它应该可以工作。
如果您取下 , { useHash: true },它的行为是否会有所不同?

e
eggy

我解决此错误的方法是查找并修复控制台报告的错误。

在命令行/终端中运行 ng build,它应该会显示一个有用的错误,例如此处的红色示例:Property 'name' does not exist on type 'object'

https://i.stack.imgur.com/Q51YX.png


ng serve 也可以运行构建/编译。两个命令都出现了相同的消息。
y
yezior

对我来说,路径也有问题,但我在根文件夹中有百分号。

在我用空格替换 %20 后,它开始工作:)


呃,这也是我的解决方案 - 供参考,我在 Mac 上,它在 Windows 框中运行良好
这是完美的,拯救了我的一天。基本上我从 azure devops 克隆了存储库,它在存储库名称中有空格。非常感谢。
你在说哪个文件?
我正在用代码写主文件夹的名称,例如我从 Azure Devops 克隆了项目“My Project”,它在我的磁盘上创建了文件夹“My%20Project”
哇,谢谢你,我花了很多时间来调试它。正如您所说,修复方法是从父目录名称中删除特殊字符。
K
Klyner

问题是我在文件夹 /project/src/app 中运行了命令。导航回项目文件夹,然后转到 /project 并从那里运行 ng serve 解决了我的问题。


J
J.Kirk.

我遇到了由构建错误引起的相同错误。我在我的应用程序目录中运行了 ng build,它帮助我纠正了我的错误


能够诊断错误非常有帮助。谢谢
N
NIKET PATEL

我在使用 Angular 9 时遇到了同样的问题。

就我而言,我将 angular.json 文件从

"aot": true

"aot": false

这个对我有用。


S
Salih Şenol Çakarcı

检查是否在 index.html 中设置了基数

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

谢谢,但我的项目文件夹不包含任何空间。
其他路线怎么样?他们是否按预期工作?
不,没有一个。
我有这个,但仍然得到错误
M
MuhammadMohsan

我正在使用 export class TestCalendar implements OnInit{} 但我没有编写函数

 ngOnInit() {
    /* Display initial */
  }

.运行命令 ng serve 后,我发现我没有使用 ngOnInit(){} 。一旦我实施,它就开始正常工作。希望它可以帮助某人。


M
MaylorTaylor

我在使用 Angular 6+ 应用程序和 ASP.NET Core 2.0 时遇到了同样的问题

我之前刚刚尝试将 Angular 应用程序从 CSS 更改为 SCSS。

我的解决方案是转到 src/angularApp 文件夹并运行 ng serve。这帮助我意识到我错过了将 src/styles.css 文件更改为 src/styles.scss


我遇到了同样的情况,但是我已经更改了文件名,这仍然在冲洗,我。我还可以在 Angular 应用程序的上下文中成功构建包。有什么 dotnet 无法处理意外的文件重命名之类的吗?
T
Tiw

当我们在我们的项目中键入“ng serve”时,刚刚弄清楚了原因..
例如 C:\Users\EdgeTech1\Desktop\CSharp\WebAPI\MyProject>ng serve

无法解析模块 C:\Users\EdgeTech1\Desktop\C
结果:failed compiled

根本原因:
我的文件夹名称是 C# Project..

注意:我尝试删除项目名称中的 #,我将 C# Project 重命名为 CSharp,然后我尝试再次打开 cmd 提示符,输入相同的内容..

例如:

C:\Users\EdgeTech1\Desktop\CSharp\WebAPI\MyProject>ng serve

我的项目编译成功..所以在命名项目文件时尽可能避免使用 ASCII 字符。


这就是解决我的问题的方法。项目在两个单词之间有一个空格 ascii %20,这就是触发 CSP 错误的原因。很有趣。谢谢您的帮助!
P
Perrier

我指的是我的供应商之一,它有两种不同的外壳。其中一个是错误的,但只有 webpack 编译器在抱怨。我不得不进入 ClientApp 文件夹并使用 ng build 或 ng serve 来查看错误。 (带有 Angular 5 的 ASP.NET Core SPA)


S
Saad Joudi

检查 baseHref 设置为“/”( angular.cli )

    "architect": {
        "build": {
            "builder": "@angular-devkit/build-angular:browser",
            "options": {
                "baseHref": "/"

如果它不起作用,请检查 index.html 中的基本 href 是否设置为“/”


我将其设置为“./”以使其在构建时实际工作。但显然,Angular 不知道如何处理它......所以,我将不得不使用构建参数 --base-href "./" 在构建期间正确设置它。
D
DonMax

对我来说,问题在于 @Component Selector 路径指向错误的路径。改完之后问题就解决了。

@Component({
selector: 'app-fetch-data',
templateUrl: './fetch-data.component.html',
providers: [ToolbarService, GroupService, FilterService, PageService, ExcelExportService, PdfExportService]
})

e
ewomack

显然,由于多种原因会发生此错误。对于那些在搜索“Cannot GET /”后登陆这里的人来说,这是我的经验

当我将 ng-bootstrap v6 安装到 Angular 8 项目中时,我遇到了这个错误。我将 ng-bootstrap 降级到 v5,现在似乎没问题,因为 ng-bootstrap v6 仅与 Angular 9 兼容。

这发生在使用 Angular .NET Core 模板在 Visual Studio 2019 中工作时。同时,Visual Studio 的输出面板显示了这个听起来很深奥的错误:“TS1086:无法在环境上下文中声明访问器”,这导致我来到这里,经过一番阅读,让我认为这是一个版本问题.看来确实如此。

我通过将 package.json 文件中的 "@ng-bootstrap/ng-bootstrap": "^6.0.0"," 更改为 "@ng-bootstrap/ng-bootstrap": "^5.0.0" 并重建来修复它.


n
nativelectronic

如果您更改了任何名称或文件组件,请检查它是否是正确的名称

@NgModule({
  declarations: [
    NewNameComponent
  ],
  imports: [
    CommonModule,
  ],
  exports:[
    NewNameComponent
     ]
})
export class YourModule { }

u
user11193342

一般是版本问题。 Node.js v8 无法使用 angular-cli 6.0 或更高版本进行编译。 angularcli v6 及更高版本适用于最新的节点版本。请确保您的节点版本是 v8,那么您需要安装 angular-cli 到 1.7.4。在 cmd 中输入 ng -v 命令并检查 cli 和 node 版本。


j
jcroll

请参阅此答案 here。您需要将 Node 未使用的所有路由重定向到 Angular:

app.get('*', function(req, res) {
  res.sendfile('./server/views/index.html')
})

O
Omar Rangel

通过选择在输出窗口中显示 ASP.NET Core Web 服务器输出的选项,您可以在停止调试后查看错误。就我而言,我指向的是不同的 templateUrl。


你的回答不够清楚。请详细说明以使其对社区更有用。
F
Faiqa-dev

首先,从您的项目中删除现有文件 package.lock.json 和 node_modules。然后,第一步是编写 npm cache clean --force。其次,在终端上也写这个命令 npm i 。这个过程解决了我的错误。 :D


A
Andre Elrico

许多答案并没有真正意义,但仍然有赞成票,这让我很好奇为什么这在某些情况下仍然有效。

angular.json

"serve": {
  "builder": "@angular-devkit/build-angular:dev-server",
  "options": {
    "deployUrl": "/",
    "baseHref": "/",

为我工作。


deployUrl 已弃用,但在我的情况下,将“baseHref”设置为“./”会导致错误。所以,我现在只将 baseHref 设置为构建命令的参数。
P
Panagiotis D.

对我来说,问题是我将项目文件夹保存在 C:\Users\... 下,这确实是个问题。在我将它保存在 C:\ 然后 npm installng serve --open 它工作得很好!


D
Devesh Pradhan

在我的 angular.json 文件中,deployUrl 设置为 static/ang

"architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "deployUrl": "/static/ang/",
             ....

这导致我的应用程序从 localhost:4200/static/ang 获得服务

删除 deployUrl 为我修复了它。

编辑:我将 deployUrl 移到 configurations 下,因为它在构建生产时很重要。 (因为我的延迟加载块没有在静态 url 上得到服务)。

"architect": {
            "build": {
              "builder": "@angular-devkit/build-angular:browser",
              "options": {
                 ....
                 ....
               },
               "configurations": {
                  "deployUrl": "/static/ang/",

Z
Zagros

碰到同样的问题,我试过这个:-ng build

它奏效了!


R
Raphaël Balet

另一个问题可能是您正在导入组件而不是它的模块。

imports: [
  YourComponent, // <-- Should be YourComponentModule
]


L
Louis Datz

我遇到的奇怪的事情是,我可以在应用程序运行时对 Visual Studio 2019 中的组件进行更改并查看我的更改,但是当我重新启动应用程序时,我得到了无法获取/错误。我没有运行 IIS Express,而是选择使用 Angular JS 运行应用程序,构建窗口显示 app.component.ts 中存在错误。原来是文件末尾的一个额外的 }。不知道它是如何到达那里的,但是当我删除它时,该应用程序运行良好。


这是如何回答原始问题的?
作为 Angular 的新手,我也遇到了“无法获取 /”错误。它可能像语法错误一样简单。通过在 Visual Studio 中使用 Angular JS 而不是 IIS Express 运行代码,我能够发现错误在哪里。命令窗口准确地告诉我是哪个文件导致了问题。
谢谢,这确实对某人有帮助。
v
veben

对我来说,问题是我的本地 CLI 与我的全局 CLI 版本不同 - 通过运行以下命令对其进行更新可以解决问题:

npm install --save-dev @angular/cli@latest

J
JoSSte

删除节点模块文件夹对我有用。

删除节点模块文件夹

运行 npm 安装。

重新运行应用程序,它应该可以工作。