javascript - 为什么在使用“dotnet new react -o my-app”中的默认代码时出现 JSON.parse 错误?
问题描述
运行终端命令 'dotnet new react -o my-app' 会构建一个 C# React 应用程序,但是在测试启动文件时它不起作用。从 my-app/ClientApp 目录运行“npm start”会启动应用程序,但导航到http://localhost:3000/fetch-data页面会出现控制台错误:
“SyntaxError:JSON.parse:JSON 数据第 1 行第 1 列的意外字符”
这是它永远不会通过的代码块:
constructor(props) {
super(props);
this.state = { forecasts: [], loading: true };
fetch('api/SampleData/WeatherForecasts')
.then(response => response.json())
.then(data => {
this.setState({ forecasts: data, loading: false });
});
}
它调用此控制器,但其中的代码永远不会运行:
[Route("api/[controller]")]
public class SampleDataController : Controller
{
[HttpGet("[action]")]
public IEnumerable<WeatherForecast> WeatherForecasts()
{
Console.WriteLine("I NEVER GET CALLED");
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
DateFormatted = DateTime.Now.AddDays(index).ToString("d"),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
});
}
我正在使用这些文档来构建应用程序:
我计划将其用作构建新应用程序的脚手架,但我担心在我对其进行任何编码之前它无法正常工作。有谁知道为什么或如何解决它?
解决方案
您会收到错误,因为 NODEJS (NPM START) 不是为托管 .NET 而设计的,而用 c# 编写的 API 调用是 AspNet、AspNetCore 等。顺便说一句,NPM START 会启动位于package.json文件中的资源,并且该文件未提及整体解决方案的 Microsoft 部分(是的,您正在工作的 Microsoft 文章令人困惑,因为它没有直接指出这一点)。
IIS(或本例中的Microsoft Internet Information Services Express)可以同时托管React和 API,因为Startup.cs文件和AspNetCore已配置为这样做。
现实世界中,我们通常在一个项目下生成我们的 API,同时在另一个项目下构建我们的 UI 应用程序,每个都托管在一个唯一的端口上,这至少通过能够独立测试API / UI来提供很大的优势(嗯,无论如何,API 都是独立的——你也可以在没有 API 的情况下测试 UI,但没有 API 数据,这并不总是实用的)。
推荐阅读
- dita - 在 DITA-OT 命令行 PDF 转换中将文件名设置为 ditamap 标题
- git - WebStorm 中的 Git 提交消息挂钩不起作用
- windows - 在 Windows 上通过 Git bash 移动包含运行脚本的文件夹会引发“权限被拒绝”
- javascript - node_modules 错误未导出统计信息 - 汇总
- php - 在本地服务器中发送邮件时遇到错误
- php - 根据另一个 MySQL 查询获取数据
- flutter - Flutter - 为什么覆盖的主题不适用于某些小部件而适用于其他小部件?
- php - 带多个项目的 Stripe API 结帐
- java - 匹配字符串前后文本的正则表达式
- javascript - 完整日历 - 拖放 - 自定义