我找到了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/**/*"
]
}
答案 0 :(得分:0)
试试这个语法:
import child = require('child_process');
这是一个commonjs样式导入,用于nodejs模块,而不是您当前的当前ES6样式导入。
答案 1 :(得分:0)
如果你有webpack.config.js
将以下数组添加到devConfig
prodConfig
和webpack.config.json
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'
}
});