因此,我试图创建我的Angle Web应用程序的Electron版本,使其在具有原生外观的台式机上运行。
我在package.json中有以下脚本
{
"name": "app",
"version": "1.0.0",
"main": "main.js",
"license": "MIT",
"productName":"example",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"build-prod": "ng build --prod",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"electron-tsc": "tsc main.ts && ng build --base-href ./ && electron .",
},
main.ts文件基本上是此处给出的示例。 https://electronjs.org/docs/tutorial/first-app
问题是,当我运行命令'npm run electron-tsc'
时,打字稿正在扫描目录的子文件夹,并尝试编译我的整个angular应用程序,同时也出现很多错误。
喜欢这个。
node_modules/@types/selenium-webdriver/http.d.ts:24:14-错误TS2583: 找不到名称“地图”。您是否需要更改目标库?尝试 将
lib
编译器选项更改为es2015或更高版本。24个标题:Map; ~~~
node_modules/@types/selenium-webdriver/http.d.ts:48:14-错误TS2583: 找不到名称“地图”。您是否需要更改目标库?尝试 将
lib
编译器选项更改为es2015或更高版本。48个标头:Map; ~~~
node_modules/@types/selenium-webdriver/remote.d.ts:139:29-错误 TS2583:找不到名称“地图”。您是否需要更改目标 图书馆?尝试将
lib
编译器选项更改为es2015或更高版本。139 setEnvironment(env:Map | {[name:string]: 字符串} | null):这;
我的main.ts没有导入,并且该命令指定仅编译main.ts
碰巧的是,我仍然会生成一个有效的main.js文件,之后我可以手动运行ng build --base-href ./ && electron .
并且一切正常,这令人沮丧,我无法使用一个命令来构建和运行它,但我不理解错误。
这是我的tsconfig.json
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
}
}
答案 0 :(得分:1)
使用--skipLibCheck
将抑制错误,而不是解决错误。短期内没关系(只是为了在解决根本原因的同时让您前进),但是由于它完全退出了库类型检查,因此确实是一支步枪。
为使TypeScript扫描声明文件并将其包含在编译中,它必须是您显式依赖的项目(您在项目中为import
或require
),或者是隐式的(已添加到{ {1}}在您的types
中)。通常情况下,它与您的依赖关系并不完全相同。为了实现真正的类型安全,树中的所有内容必须井井有条。有时,这仅仅是因为所提供的类型不完美,需要修复。
您通常可以先更新tsconfig.json
并更新依赖项。尝试运行@types/selenium-webdriver
来查看需要更新的内容。
如果这样做没有帮助,则可以为相关库编写类型声明(并将其发送到DefinitelyTyped或将其保留在项目中)。