电子和打字稿“找不到模块'电子'”

时间:2017-10-04 10:15:26

标签: typescript electron

关于https://electron.atom.io/blog/2017/06/01/typescript 电子支持打字稿,但我的设置无效:

[ts] cannot find module 'electron'

我使用vscode 1.16.1

这是我的package.json

<a class="privacy enllac-lower" href="{{ path('privacy_lang') }}">Política de privacidad</a>

tsconfig.json

{
  [...]
  "devDependencies": {
    "electron": "^1.6.13",
    "ts-loader": "~2.3.7",
    "typescript": "~2.5.0",
    "webpack": "^3.6.0",
    [...]
  }
}

和我的webpack

{
    "compilerOptions": {
        "module": "es6",
        "noImplicitAny": true,
        "removeComments": true,
        "preserveConstEnums": true,
        "sourceMap": true
    },
    "include": [
        "src/**/*"
    ]
}

当我添加到main.ts的顶部时

const path = require('path');

module.exports = [{
  entry: './src/main.ts',
  devtool: 'inline-source-map',
  target: 'electron',
  module: {
    rules: [
      { test: /\.ts$/, use: 'ts-loader', exclude: /node_modules/ }
    ]
  },
  node: {
    __dirname: false,
    __filename: false
  },
  resolve: {
    extensions: [".ts", ".js"]
  },
  output: {
    filename: 'electron_core.js',
    path: path.resolve(__dirname, 'dist')
  }
}  
];

然后没关系我没有错误了。但是我想避免引用像这样的文件,因为它似乎对最新版本的打字稿没有用(参见How do I import other TypeScript files?),而且在电子教程中对于打字稿,他们不需要它......)

由于

3 个答案:

答案 0 :(得分:16)

问题似乎在于tsc(和tsserver)重新启动模块by default的方式。

要使用类似node.js的算法,您需要将"moduleResolution": "node"添加到"compilerOptions"的{​​{1}}部分。

答案 1 :(得分:0)

使用node@12是临时解决方案,以防此问题是由this错误(而不是上述任何其他错误)引起的。

答案 2 :(得分:-1)

这里有完全相同的问题。 由于它找不到“电子”模块,因此也会影响VS代码中的代码完成。

发生这种情况是因为在node_module文件夹中不存在电子。

如果我执行npm install electron --save-dev,它将解决此问题。