resolve alias在编译typescript时提示找不到模块?

使用resolve.alias将一些模块路径指定了一个短的别名:

    resolve:{
        extensions: [' ', '.webpack.js', '.web.js', '.ts', '.js'],
        alias: {
            uapDir:path.resolve(__dirname,"src/uap")
        }
    },

在js文件中使用require('uapDir/abc')可以找到src/uap下的abc.js模块。但是webpack工程中的ts文件使用:

import * as abc from 'uapDir/abc'

却总是提示找不到uapDir/abc模块。按网上大神的说法,需要将webpack.config.js中的alias路径同步到tsconfig.json中,且必须指定baseUrl,修改后,效果如下:

  "compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "sourceMap": true,
    "baseUrl":".",
    "paths":{
      "uapDir":["./src/uapDir"]
    }

重新编译仍旧报错。翻看webpack起步文档,不经意见看到tsconfig.js有个

"allowJs": true

把它添加至tsconfig.js后,编译正常!

总结
原来allowJs属性就是用来默认支持ts引入js文件的开头。默认是关闭的,所以ts在编译时无法引入js的模块,只能引入ts文件。将其打开后,ts即可引入js模块了。

你可能感兴趣的:(resolve alias在编译typescript时提示找不到模块?)