我有三个层次的问题:
- Bascis**:我有一个Blazor WASM应用程序,需要一些javascript,但我想使用typescript。因此我添加了一个tsconfig文件,wwwroot文件夹中的typescript被编译为js并包含在wwwroot输出中。现在我可以从浏览器中运行的WASM加载它。
- 存储库中**:这是第一个问题
我想把 typescript 和周围的模块移到它自己的库项目中。
我创建了一个新的类库项目,在其中创建了一个wwwroot文件夹,将ts文件移动到该wwwroot文件夹,将tsconfig文件移动到新类库的根目录,在该类库中安装了Microsoft. JSInterop,并从Blazor应用程序引用了它。
不幸的是,js文件没有包含在应用程序的输出中,我不知道如何继续。我必须添加一个tsconfig到应用程序中吗?似乎是错误的,因为应用程序应该只使用库提供的一切,库应该能够提供的东西,而不需要应用程序编译它。
- 更新日期:**
最初忘记将Microsoft.TypeScript.MSBuild
包添加到库项目中,添加了Microsoft.TypeScript.MSBuild
和<TypeScriptCompile Include="wwwroot\myFile.ts" />
(从最初的Blazor WASM项目复制而来),但它说它不能在Uint8Array上交互,因为它至少需要es2015,这很奇怪,因为tsconfig.json中的"target"是es2020,所以我猜它现在没有正确Maptsconfig?
- 更新2:**
这个库必须被创建为Razor类库(. sdk. Razor),现在ts被编译为js。然后我将其copy属性设置为PreserveNewest,如下一步中链接的答案所示。
- 新问题:**
Blazor WASM无法加载,得到404作为响应。
- 下一步:在NuGet封装中**
当这工作时,我想将库作为NuGet包分发,这样人们就可以将它安装到他们的Blazor WebAssembly项目中,而不必创建tsconfig或js文件。
Another SO answer告诉OP在csproj文件中将js文件设置为"content",并告诉nuget在安装时将该js文件复制到应用程序的wwwroot。除了我的库中没有js文件,只有编译到js输出中的ts文件。我应该告诉nuget从哪里复制js文件?
1条答案
按热度按时间oug3syen1#
所以在浏览了更多的网站,尝试了比以前更多的东西之后,我解决了这个问题:
当来自库时,文件不是在
/myFile.js
下提供,而是在/_content/My.Lib/myFile.js
下提供,所有来自库的静态文件也是如此。如果库是作为NuGet包包含的,则同样的概念也适用。