我正在使用Cordova构建一个应用程序,我正在尝试构建一个Windows应用程序。使用Cordova CLI没有产生任何好结果,所以我尝试在platforms / windows文件夹中构建Visual Studio解决方案。
问题是它无法构建并返回一长串错误,所有这些都只是说类似于此:
TS6054 Build:File'C:/ Code / ProjectClosr / Cordova App / platforms / windows / www / Gruntfile.js'具有不受支持的扩展名。唯一支持的扩展名是“.ts”,“。tsx”,“。d.ts”。
现在,事实证明它认为所有这些文件都是TypeScript文件,即使它们只是自述文件,JavaScript文件,CSS文件等,并且它之所以这样做是因为由于某种原因,其属性中的所有这些文件都具有“包行动”设置到TypeScriptCompile。现在,我没有明显创建这个解决方案,它是由Cordova自动生成的,但是我需要一种方法来解决这个问题,通过某种方式将所有这些属性的“Package Action”属性设置回其真实值,而不是一切都是TypeScript资源。
我该怎么做呢?
看起来你在使用通配符添加的文件夹中的某处有一个TypeScript文件。不知道为什么MSVS会将内容类型更改为TypeScriptCompile,因为您在文件夹中提供的通配符找到了整个文件。
在我的情况下,我在angular-ui-router.d.ts
内有www\lib\angular-ui-router\api
文件。
通过在CordovaApp.projitems文件中添加Exclude指令解决:
<Content Include="www\**" Exclude="**\*.ts" />
还要注意$(MSBuildThisFileDirectory)应该从路径中删除,因为它神奇地打破了这个技巧。
并且这样做是因为由于某种原因,其属性中的所有这些文件都将“Package Action”设置为TypeScriptCompile。
只需通过原始编辑从解决方案中删除<TypeScriptCompile ...
密钥。他们可能也已经作为<Content ...
出现,这是你需要的。
@Pavel Kozlov的解决方案对我来说非常有用。
如果您使用的是Cordova,则可以使用以下脚本自动完成:
./reset_windows.sh
cordova platform rm windows
cordova platform add windows
sed -i '9s/.*/ <Content Include="www\\**" Exclude="**\\*.ts" \/>/' platforms/windows/CordovaApp.projitems
确保要替换的旧行实际上是第9行,正如9s
在命令开头所说的那样。
根据this,您应该在tsconfig.json中设置“allowJs”:true以允许.js扩展名。
希望这有帮助!
"compilerOptions": {
"noImplicitAny": false,
"noEmitOnError": true,
"removeComments": false,
"sourceMap": true,
"target": "es5",
"outDir": "./scripts/",
"allowJs": true
}