【问题标题】:How to make TypeScript 2 to find node modules?如何让 TypeScript 2 找到节点模块?
【发布时间】:2017-07-04 21:01:17
【问题描述】:

我找到了this 的答案,但它并没有解决我的问题。

我只是在学习 TypeScript。

我所做的就这么简单:

import * as child from 'child_process';

触发此错误的原因:

TSError: ⨯ Unable to compile TypeScript
db\installDB.ts (1,24): Cannot find module 'child_process'. (2307)

我的想法是:它没有找到“child_process”,因为我没有输入它,所以我添加了@types/node,希望它现在能找到它。没有。

有什么问题?

这是我的tsconfig.json

{
    "compilerOptions": {
        "outDir": "./dist/",
        "sourceMap": true,
        "noImplicitAny": true,
        "module": "commonjs",
        "target": "es5",
        "jsx": "react",
        "allowJs": true
    },
    "include": [
        "./db/**/*",
        "./src/**/*"
    ]
}

【问题讨论】:

标签: node.js typescript


【解决方案1】:

如果你有 webpack.config.js

将以下数组添加到您的webpack.config.json 中的devConfigprodConfig

 externals: [
(function () {
    var IGNORES = ["fs","child_process","electron","path","assert","cluster","crypto","dns","domain","events","http","https","net","os","process","punycode","querystring","readline","repl","stream","string_decoder","tls","tty","dgram","url","util","v8","vm","zlib"];
    return function (context, request, callback) {
        if (IGNORES.indexOf(request) >= 0) {
            return callback(null, "require('" + request + "')");
        }
        return callback();
    };
})()
],

这将忽略IGNORES 数组中列出的模块。

然后,在您的“Typescript”文件中。

declare var require:any;
...
...
var exec = require('child_process');

如果您没有 webpack.config 并且您的项目正在使用 webpack。您可以在“node_modules/app_scripts/config”中找到它。从该路径复制 webpack.config 并将其保存在项目根目录的 config 文件夹中,并将以下代码粘贴到您的 package.json

"config": {
   "ionic_bundler": "webpack",
   "ionic_webpack": "./config/webpack.config.js"
 },

如果你有SystemJS

将以下代码添加到 system.config.js

 System.config({
  map: {
    'child_process': '@node/child_process'
  }
});

【讨论】:

    【解决方案2】:

    试试这个语法:

    import child = require('child_process');
    

    这是一个 commonjs 样式的导入,用于 nodejs 模块,而不是您当前拥有的当前 ES6 样式的导入。

    【讨论】:

      猜你喜欢
      • 2021-12-07
      • 2017-10-13
      • 1970-01-01
      • 2017-05-19
      • 2022-12-15
      • 2021-01-06
      • 1970-01-01
      • 2020-06-14
      • 2017-09-17
      相关资源
      最近更新 更多