我有一个关于路径映射模块分辨率(Typescript 2.0)的问题.
我有一个结构项目https://github.com/sanex3339/javascript-obfuscator/tree/strictNullChecks
我的tsconfig.ts
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": true,
"noImplicitAny": true,
"baseUrl": "src/",
"paths": {
"*": [
"*"
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
在文件https://github.com/sanex3339/javascript-obfuscator/blob/dev/src/JavaScriptObfuscator.ts我设置
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';
Run Code Online (Sandbox Code Playgroud)
所有接口(.d.ts扩展名)将正确导入,没有任何错误,但在最后3次导入时出现错误:
Can't resolve 'cli/JavaScriptObfuscatorCLI' in '/home/username/PhpstormProjects/javascript-obfuscator/src'
Run Code Online (Sandbox Code Playgroud)
为什么我收到此错误以及为什么接口导入期间没有错误?
有趣的是,如果我看一下跟踪分辨率日志,我会看到:
======== 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'. ========
Run Code Online (Sandbox Code Playgroud)
您收到的错误绝对不是来自 typescript,而是来自 webpack。由于您使用的是 webpack 2.0,因此您应该设置的相关加载器属性是以下modules:属性:
resolve: {
extensions: ['.ts'],
modules: ['./src', './node_modules']
},
Run Code Online (Sandbox Code Playgroud)
我克隆了您的项目并将resolve属性设置为上述设置,并且能够编译该项目而没有问题。
| 归档时间: |
|
| 查看次数: |
1474 次 |
| 最近记录: |