【发布时间】:2018-06-06 22:54:12
【问题描述】:
好的,所以我有一个 Typescript 定义文件model.d.ts。它包含在我的业务逻辑中使用的类的定义,以便我可以在我的 Vue.js 文件中进行强类型输入。
我有一个 Vue.js 模板 person.vue,其代码部分如下所示:
<script lang="ts">
import axios from "axios";
import * as _ from "lodash";
import * as model from "model";
// ...
</script>
但是当我尝试使用 Webpack 构建它时,我遇到了问题:
ERROR in I:\git\myapp\src\component\person-page\person.vue.ts
[tsl] ERROR in I:\git\myapp\src\component\person-page\person.vue.ts(27,24)
TS2307: Cannot find module 'model'.
ERROR in ../myapp/node_modules/ts-loader!../myapp/node_modules/vue-loader/lib/selector.js?type=script&index=0&bustCache!../myapp/src/component/person-page/person.vue
Module not found: Error: Can't resolve 'model' in 'I:\git\myapp\src\component\person-page'
@ ../myapp/node_modules/ts-loader!../myapp/node_modules/vue-loader/lib/selector.js?type=script&index=0&bustCache!../myapp/src/component/person-page/person.vue 10:14-30
@ ../myapp/src/component/person-page/person.vue
@ ../myapp/src/main.ts
@ multi webpack-hot-middleware/client ./src/main.ts
我正在使用ts-loader,我的webpack.config.js 的相关部分如下所示:
module.exports = {
// ...
module: {
rules: [
// ...
{
test: /.ts$/,
use: {
loader: "ts-loader", options: {
appendTsSuffixTo: [/\.vue$/]
}
},
exclude: /node_modules/
},
// ...
{
test: /\.vue$/,
loader: "vue-loader"
}
]
},
resolve: {
extensions: [".ts", ".js", ".vue", ".json"],
alias: {
"vue$": "vue/dist/vue.esm.js"
}
}
};
为什么我的定义文件不起作用,我怎样才能使它可以在person.vue中使用?
【问题讨论】:
-
我认为你需要使用相对路径:
"./model" -
@BogdanMartinescu 允许我使用
tsc手动编译我的 TS 文件,但 webpack 的ts-loader仍然给出错误:ERROR in ../myapp/node_modules/ts-loader!../myapp/src/component/person-page/person.ts Module not found: Error: Can't resolve './model' in 'I:\git\myapp\src\component\person-page'
标签: node.js typescript webpack vue.js