Viv*_*ere 8 asp.net asp.net-core asp-net-core-spa-services
在 VS2019 预览版中,您有多个模板。我对以下两个感兴趣:
我对两者都进行了一些尝试,发现了一些差异。在ASP.NET Core with React.js
模板中,启动了 SPA 代理服务器,而在 中则ASP.NET Core with React.js and Redux
无需启动 SPA 代理服务器(第二个模板在 TS 中,而不是 JS)。
我的意思是simply works without that
。我查看了这两个.csproj
文件,发现了差异(我只会附加值得注意的差异):
第一个模板:
...
<SpaProxyServerUrl>https://localhost:5002</SpaProxyServerUrl>
<SpaProxyLaunchCommand>npm start</SpaProxyLaunchCommand>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.SpaProxy" Version="6.0.0-preview.6.21355.2" />
</ItemGroup>
...
<ItemGroup>
<DistFiles Include="$(SpaRoot)build\**" />
<ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
<RelativePath>wwwroot\%(RecursiveDir)%(FileName)%(Extension)</RelativePath>
...
Run Code Online (Sandbox Code Playgroud)
第二个模板:
...
# SpaProxy stuff missing
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="6.0.0-preview.5.21301.17" />
</ItemGroup>
...
<ItemGroup>
<DistFiles Include="$(SpaRoot)build\**; $(SpaRoot)build-ssr\**" />
<ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
<RelativePath>%(DistFiles.Identity)</RelativePath>
Run Code Online (Sandbox Code Playgroud)
请注意,在第二个模板中Microsoft.AspNetCore.SpaServices.Extensions
使用的是而不是Microsoft.AspNetCore.SpaProxy
。
文件中也存在一些差异Startup.cs
。第二个模板使用了一些额外的中间件
...
<SpaProxyServerUrl>https://localhost:5002</SpaProxyServerUrl>
<SpaProxyLaunchCommand>npm start</SpaProxyLaunchCommand>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.SpaProxy" Version="6.0.0-preview.6.21355.2" />
</ItemGroup>
...
<ItemGroup>
<DistFiles Include="$(SpaRoot)build\**" />
<ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
<RelativePath>wwwroot\%(RecursiveDir)%(FileName)%(Extension)</RelativePath>
...
Run Code Online (Sandbox Code Playgroud)
我还观察到,JS 中ClientApp
有一个setupProxy.js
文件,而 TS 中ClientApp
没有。该命令也npm start
设置为,"start": "rimraf ./build && react-scripts start"
并且在 TS 文件中它只是react-scripts start
.
我尝试进行必要的调整以像 TS 应用程序一样运行 JS 应用程序,但我认为我错过了一些东西,因为我遇到了一个问题:
System.Net.Http.HttpRequestException:无法将请求代理到 http://localhost:61105/,因为对代理目标的请求失败。检查代理目标服务器是否正在运行并接受对 http://localhost:61105/ 的请求。
虽然这个错误确实有意义,但我不知道 TS 模板在哪里以及如何启动这样的代理服务器(如果有的话)。
我的问题是:我可以在JS模板中获取TS模板的行为吗?如果是,怎么办?如果没有,为什么?
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import mkcert from "vite-plugin-mkcert";
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react(), mkcert()],
server: {
port: 5000,
https: true,
strictPort: true,
proxy: {
"/api": {
target: "https://localhost:3000",
changeOrigin: true,
secure: false,
rewrite: (path) => path.replace(/^\/api/, "/api"),
},
},
},
Run Code Online (Sandbox Code Playgroud)
我不知道 TS 模板在哪里以及如何启动这样的代理服务器(如果有的话)。
这就是spa.UseReactDevelopmentServer(npmScript: "start")
对你有用的。查看您的package.json
脚本,您会看到该start
脚本在端口 5002 上启动代理服务器。
归档时间: |
|
查看次数: |
19493 次 |
最近记录: |