路径映射模块分辨率(打字稿2.0)



我有一个有关路径映射模块分辨率(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属性设置为上述设置,并能够编译项目。

最新更新