tsconfig 配置 paths 后运行提示找不到模块是什么意思啊?

2020-04-24 13:59:44 +08:00
 cs3230524

tsconfig.json

...
    "baseUrl": ".",
    "paths": {
      "@share/*": [
        "../share/*"
      ]
    }
...

jsconfig.json

{
    "compilerOptions": {
        "baseUrl": ".",
        "paths": {
            "@share/*": [
                "../share/*"
            ]
        },
        "target": "ES6",
        "module": "commonjs",
        "allowSyntheticDefaultImports": true
    },
    "include": [
        "**/*.ts"
    ],
    "exclude": [
        "node_modules"
    ]
}

在 index.ts 配置require('module-alias/register');

这时候运行,导入import { Rst } from '@share/core/vo';的地方就会报错,提示找不到模块,是不是 module-alias 必须要分开声明啊?不能用星号全部声明?

7803 次点击
所在节点    Node.js
5 条回复
MorningStar0
2020-04-24 14:08:01 +08:00
需要引入 react-rewrite 这个,改写一下 start 部分的脚本,让其通过 rewrite 启动
VDimos
2020-04-24 14:09:41 +08:00
这个是要改 webpack 的配置,光设置 path 只告诉了 vscode 去哪里找,没告诉编译器去哪里找
cs3230524
2020-04-24 18:27:41 +08:00
@VDimos 我没用 webpack 啊,node 项目,我永的 module-alias 貌似不行
VDimos
2020-04-24 19:56:46 +08:00
@cs3230524 试试../share/**/*这样写?这个配置文件我也很迷糊,版本不同还不一样
fanshide
2020-04-28 14:33:39 +08:00
本地开发的话一般不需要使用 module-alias,tsconfig.json 中的 paths 就可以了,但要让打包后项目中模块路径查找正常的话就需要加入 module-alias,最好在入口文件判断环境变量来觉得使用使用 module-alias,比如:
```js
// addAlias.ts
import moduleAlias from 'module-alias'
import path from 'path'

export default () => {
moduleAlias.addAliases({
'@share': path.join(__dirname, 'src/share')
})
}

```

```js
// app.ts
import addAlias from './addAlias'

if (process.env.NODE_ENV !== 'development') {
addAlias()
}
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/665660

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX