我有一个有关路径映射模块分辨率(Typescript 2.0)的问题。
我有一个带有结构的项目https://github.com/sanex3339/javascript-obfuscator/tree/tree/strictnullchecks
我的tsconfig.ts
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": true,
"noImplicitAny": true,
"baseUrl": "src/",
"paths": {
"*": [
"*"
]
}
}
}
在文件中https://github.com/sanex3339/javascript-obfuscator/blob/dev/src/javascriptobfuscator.ts i Set
import { INode } from 'interfaces/nodes/INode';
import { IObfuscator } from "interfaces/IObfuscator";
import { IOptions } from 'interfaces/IOptions';
import { IOptionsPreset } from "interfaces/IOptionsPreset";
import { JavaScriptObfuscatorCLI } from 'cli/JavaScriptObfuscatorCLI';
import { Obfuscator } from 'Obfuscator';
import { Options } from 'Options';
所有接口(.D.TS扩展)将正确导入而没有任何错误,但是在3个最后导入中,我会收到一个错误:
Can't resolve 'cli/JavaScriptObfuscatorCLI' in '/home/username/PhpstormProjects/javascript-obfuscator/src'
为什么我会遇到此错误,为什么在接口导入期间没有错误?
有趣的是,如果我查看跟踪分辨率日志,我会看到:
======== Resolving module 'cli/JavaScriptObfuscatorCLI' from '/home/username/PhpstormProjects/javascript-obfuscator/src/JavaScriptObfuscator.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
'baseUrl' option is set to '/home/username/PhpstormProjects/javascript-obfuscator/src', using this value to resolve non-relative module name 'cli/JavaScriptObfuscatorCLI'
'paths' option is specified, looking for a pattern to match module name 'cli/JavaScriptObfuscatorCLI'.
Module name 'cli/JavaScriptObfuscatorCLI', matched pattern '*'.
Trying substitution '*', candidate module location: 'cli/JavaScriptObfuscatorCLI'.
Loading module as file / folder, candidate module location '/home/username/PhpstormProjects/javascript-obfuscator/src/cli/JavaScriptObfuscatorCLI'.
File '/home/username/PhpstormProjects/javascript-obfuscator/src/cli/JavaScriptObfuscatorCLI.ts' exist - use it as a name resolution result.
Resolving real path for '/home/username/PhpstormProjects/javascript-obfuscator/src/cli/JavaScriptObfuscatorCLI.ts', result '/home/username/PhpstormProjects/javascript-obfuscator/src/cli/JavaScriptObfuscatorCLI.ts'
======== Module name 'cli/JavaScriptObfuscatorCLI' was successfully resolved to '/home/username/PhpstormProjects/javascript-obfuscator/src/cli/JavaScriptObfuscatorCLI.ts'. ========
您遇到的错误绝对不是来自Typescript,而是来自WebPack。由于您使用的是WebPack 2.0,因此您应该设置的相关加载程序属性是modules:
属性:
resolve: {
extensions: ['.ts'],
modules: ['./src', './node_modules']
},
我克隆了您的项目,并将resolve
属性设置为上述设置,并能够编译项目。