按照文档示例在model文件中尝试import { Effect, Reducer, Subsription } from 'umi',控制台提示模块“"../../../node_modules/umi/types"”没有导出的成员“Effect”。等消息
在model文件中import { Effect, Reducer, Subsription } from 'umi'
有尝试按照文档中的提示进行自检,已在.umirc.ts中开启配置如下
export default defineConfig({
...
dva: {},
...
})
在tsconfig.json中
{
“compilerOptions”:{
...
"paths": {
"@/*": ["src/*"],
"@@/*": ["src/.umi/*"]
},
}
}
运行一下,需要在 src/.umi 生成一个文件夹,提示就正常了。
运行一下,需要在
src/.umi生成一个文件夹,提示就正常了。
运行了,在src/.umi下也生成了文件,这是我的项目地址,项目地址
遇到同样的问题,ts报错在Node_modules/umi/types没有导出这些,修改如下tsconfig配置并宠妻vscode解决了,如若@/寻找组件模块不存在则tsconfig未生效。
{
"compilerOptions": {
"baseUrl": "./",
"outDir": "build",
"module": "esnext",
"target": "ES6",
"lib": ["esnext", "dom"],
"sourceMap": true,
"allowJs": true,
"jsx": "react",
"moduleResolution": "node",
"rootDir": ".",
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"strictNullChecks": true,
"importHelpers": true,
"suppressImplicitAnyIndexErrors": true,
"experimentalDecorators": true,
"downlevelIteration": true,
"allowSyntheticDefaultImports": true,
"paths": {
"@/*": ["src/*"],
"@@/*": ["src/.umi/*"]
}
},
"exclude": [
"node_modules",
"build",
"dist",
"scripts",
"acceptance-tests",
"webpack",
"jest",
"src/setupTests.ts",
"tslint:latest",
"tslint-config-prettier"
]
}
遇到同样的问题,ts报错在Node_modules/umi/types没有导出这些,修改如下tsconfig配置并宠妻vscode解决了,如若@/寻找组件模块不存在则tsconfig未生效。
{ "compilerOptions": { "baseUrl": "./", "outDir": "build", "module": "esnext", "target": "ES6", "lib": ["esnext", "dom"], "sourceMap": true, "allowJs": true, "jsx": "react", "moduleResolution": "node", "rootDir": ".", "forceConsistentCasingInFileNames": true, "noImplicitReturns": true, "noImplicitThis": true, "noImplicitAny": true, "noUnusedLocals": true, "noUnusedParameters": true, "strictNullChecks": true, "importHelpers": true, "suppressImplicitAnyIndexErrors": true, "experimentalDecorators": true, "downlevelIteration": true, "allowSyntheticDefaultImports": true, "paths": { "@/*": ["src/*"], "@@/*": ["src/.umi/*"] } }, "exclude": [ "node_modules", "build", "dist", "scripts", "acceptance-tests", "webpack", "jest", "src/setupTests.ts", "tslint:latest", "tslint-config-prettier" ] }
按照你的这个配置了,也重新生成了.umi里的文件,也更新了全局umi版本到最新,可是还是提示没有导出
我也是碰到了同样的问题
设置完tsconfig后要重新启动vscode或者重新加载项目才会生效。
遇到同样的问题,ts报错在Node_modules/umi/types没有导出这些,修改如下tsconfig配置并宠妻vscode解决了,如若@/寻找组件模块不存在则tsconfig未生效。
{ "compilerOptions": { "baseUrl": "./", "outDir": "build", "module": "esnext", "target": "ES6", "lib": ["esnext", "dom"], "sourceMap": true, "allowJs": true, "jsx": "react", "moduleResolution": "node", "rootDir": ".", "forceConsistentCasingInFileNames": true, "noImplicitReturns": true, "noImplicitThis": true, "noImplicitAny": true, "noUnusedLocals": true, "noUnusedParameters": true, "strictNullChecks": true, "importHelpers": true, "suppressImplicitAnyIndexErrors": true, "experimentalDecorators": true, "downlevelIteration": true, "allowSyntheticDefaultImports": true, "paths": { "@/*": ["src/*"], "@@/*": ["src/.umi/*"] } }, "exclude": [ "node_modules", "build", "dist", "scripts", "acceptance-tests", "webpack", "jest", "src/setupTests.ts", "tslint:latest", "tslint-config-prettier" ] }按照你的这个配置了,也重新生成了.umi里的文件,也更新了全局umi版本到最新,可是还是提示没有导出
设置完tsconfig后要重新启动vscode或者重新加载项目才会生效。
在src/models/ 下新建一个文件 xxx.ts
export default{
namespace:'xxx'
}
就OK了。如果models/下没有文件或者没有model的export,配置写了也不会加载插件- -
在src/models/ 下新建一个文件
xxx.tsexport default{ namespace:'xxx' }就OK了。如果models/下没有文件或者没有model的export,配置写了也不会加载插件- -
确实是这样子;
其实是否应该做成在.umirc.ts里面只要引入dva的配置,就直接加载插件呢...
必须保存才加载插件,在没保存之前一直报错,这个很影响开发体验,并且会让开发者觉得,是否哪里的问题...
这个问题有什么进展吗?总是报错心态崩了啊 @sorrycc
一般跟你tsconfig.json中的paths这个配置项有关,试下改成这样吧
"paths": {
"@/*": ["./src/*"],
"@@/*": ["./src/.umi/*"]
}
一般跟你tsconfig.json中的paths这个配置项有关,试下改成这样吧
"paths": { "@/*": ["./src/*"], "@@/*": ["./src/.umi/*"] }
我的配置文件
{
"compilerOptions": {
"outDir": "build/dist",
"module": "esnext",
"target": "esnext",
"lib": ["esnext", "dom"],
"sourceMap": true,
"baseUrl": ".",
"jsx": "react",
"allowSyntheticDefaultImports": true,
"moduleResolution": "node",
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"suppressImplicitAnyIndexErrors": true,
"noUnusedLocals": true,
"allowJs": true,
"skipLibCheck": true,
"experimentalDecorators": true,
"strict": true,
"paths": {
"@/*": ["./src/*"],
"@@/*": ["./src/.umi/*"]
}
},
"exclude": ["node_modules", "build", "dist", "scripts", "acceptance-tests", "webpack", "jest"]
}
一般跟你tsconfig.json中的paths这个配置项有关,试下改成这样吧
"paths": { "@/*": ["./src/*"], "@@/*": ["./src/.umi/*"] }我的配置文件
{ "compilerOptions": { "outDir": "build/dist", "module": "esnext", "target": "esnext", "lib": ["esnext", "dom"], "sourceMap": true, "baseUrl": ".", "jsx": "react", "allowSyntheticDefaultImports": true, "moduleResolution": "node", "forceConsistentCasingInFileNames": true, "noImplicitReturns": true, "suppressImplicitAnyIndexErrors": true, "noUnusedLocals": true, "allowJs": true, "skipLibCheck": true, "experimentalDecorators": true, "strict": true, "paths": { "@/*": ["./src/*"], "@@/*": ["./src/.umi/*"] } }, "exclude": ["node_modules", "build", "dist", "scripts", "acceptance-tests", "webpack", "jest"] }
看下你的项目目录结构
一般跟你tsconfig.json中的paths这个配置项有关,试下改成这样吧
"paths": { "@/*": ["./src/*"], "@@/*": ["./src/.umi/*"] }我的配置文件
{ "compilerOptions": { "outDir": "build/dist", "module": "esnext", "target": "esnext", "lib": ["esnext", "dom"], "sourceMap": true, "baseUrl": ".", "jsx": "react", "allowSyntheticDefaultImports": true, "moduleResolution": "node", "forceConsistentCasingInFileNames": true, "noImplicitReturns": true, "suppressImplicitAnyIndexErrors": true, "noUnusedLocals": true, "allowJs": true, "skipLibCheck": true, "experimentalDecorators": true, "strict": true, "paths": { "@/*": ["./src/*"], "@@/*": ["./src/.umi/*"] } }, "exclude": ["node_modules", "build", "dist", "scripts", "acceptance-tests", "webpack", "jest"] }看下你的项目目录结构

pro项目
没导出类型,我的是2.9版本的,也没导出。用
import { Reducer } from 'redux';
import { Effect } from 'dva'; 来代替即可
重现这个问题,应该是类型的导出的问题
确定配置没问题并且 models 下有model 后删除 .umi 重新执行 umi generate tmp 后解决了这个问题。我的 umi 版本是 3.2.19
在src/models/ 下新建一个文件
xxx.tsexport default{ namespace:'xxx' }就OK了。如果models/下没有文件或者没有model的export,配置写了也不会加载插件- -
这样才行吧,必须export default xxx
Most helpful comment
在src/models/ 下新建一个文件
xxx.ts就OK了。如果models/下没有文件或者没有model的export,配置写了也不会加载插件- -