找不到去 Vuex WebStorm 的声明?
Cannot find declaration to go to Vuex WebStorm?
我添加了自动导入 Vuex 模块,之后我无法从组件或我声明的其他地方转到 Vuex actions/getters/etc。
现在我的架构是这样的:
- index.ts
- 商店
- module1.store.ts
- module2.store.ts
- module3.store.ts
- index.ts
store/index.ts:
const requireModule = require.context('.', false, /\.ts$/)
const modules: any = {}
requireModule.keys().forEach(fileName => {
if (fileName === './index.ts') return
const moduleName = fileName
.replace(/(\.\/|\.store\.ts)/g, '')
.replace(/^\w/, c => c.toLowerCase())
modules[moduleName] = requireModule(fileName).default || requireModule(fileName)
})
export default modules
index.ts(兄弟店):
export default new Vuex.Store({
modules,
strict: debug,
plugins: debug ? [createLogger()] : []
})
如果我在组件中使用任何操作它是有效的,但如果我想从组件中执行此操作我不能:
每个商店模块都有:
export default {
namespaced: true,
state,
actions,
getters,
mutations
}
WebStorm中的Vuex补全是基于静态代码分析的。不幸的是,您使用的语法太复杂,无法静态分析,因为模块名称是从文件名动态生成的。
请参阅 WEB-45228 中的评论以了解可能的解决方法
我添加了自动导入 Vuex 模块,之后我无法从组件或我声明的其他地方转到 Vuex actions/getters/etc。
现在我的架构是这样的:
- index.ts
- 商店
- module1.store.ts
- module2.store.ts
- module3.store.ts
- index.ts
store/index.ts:
const requireModule = require.context('.', false, /\.ts$/)
const modules: any = {}
requireModule.keys().forEach(fileName => {
if (fileName === './index.ts') return
const moduleName = fileName
.replace(/(\.\/|\.store\.ts)/g, '')
.replace(/^\w/, c => c.toLowerCase())
modules[moduleName] = requireModule(fileName).default || requireModule(fileName)
})
export default modules
index.ts(兄弟店):
export default new Vuex.Store({
modules,
strict: debug,
plugins: debug ? [createLogger()] : []
})
如果我在组件中使用任何操作它是有效的,但如果我想从组件中执行此操作我不能:
每个商店模块都有:
export default {
namespaced: true,
state,
actions,
getters,
mutations
}
WebStorm中的Vuex补全是基于静态代码分析的。不幸的是,您使用的语法太复杂,无法静态分析,因为模块名称是从文件名动态生成的。
请参阅 WEB-45228 中的评论以了解可能的解决方法