【发布时间】:2019-05-18 02:46:11
【问题描述】:
因此,我正在尝试创建我的 Angular 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 个标题:地图; ~~~
node_modules/@types/selenium-webdriver/http.d.ts:48:14 - 错误 TS2583: 找不到名称“地图”。您需要更改目标库吗?尝试 将
lib编译器选项更改为 es2015 或更高版本。48 个标题:地图; ~~~
node_modules/@types/selenium-webdriver/remote.d.ts:139:29 - 错误 TS2583:找不到名称“地图”。你需要改变你的目标吗 图书馆?尝试将
lib编译器选项更改为 es2015 或更高版本。139 setEnvironment(env: Map | {[name: string]: 字符串} |空):这个;
我的 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"
]
}
}
【问题讨论】:
-
这可能是由于automatic type inclusion。尝试文档所说的禁用它:将
"types": []添加到您的tsconfig.json。 -
感谢您的回复,刚刚试过但同样的错误:/
-
那么我猜这些类型由于参考而被包括在内。我不确定为什么会出现这些编译错误,但您应该能够使用
--skipLibCheck选项来抑制它们。这将跳过*.d.ts文件中的类型检查。 -
--skipLibCheck 对我的 tsc 命令有效! :) 随意添加作为答案。我将稍等片刻,看看是否有更好的答案来解释问题的实际原因。如果没有我会接受。谢谢!!
-
奇怪的是错误引用了缺少
Map,但你的库设置为es2017,它肯定应该有Map的类型......你的tsconfig.json可能没有得到已接?如果你在main.ts中使用Map,它会编译吗?
标签: angular typescript electron