[英]Call a node module from another module without using require() everywhere
[英]Using typescript module without require()
我写了一个打字稿2.3 app.ts,它需要Vuejs库v2。 Vuejs脚本src是在html文件中手动添加的。 我只想使用Vuejs进行类型检查! 我希望我只能像这样引用:
/// <参考路径=“ vue.d.ts” />
但是无法从app.ts访问Vue类。
我试图直接导入模块:
从“ ./vue”导入*作为Vue;
这次我必须使用新的Vue.Vue({})来访问该类,但使用VS 2017构建。 生成的app.js以var Vue = require(“ ./ vue”);开始。 。 但是在浏览器中,我遇到了一些错误:
对于require(),我添加<script src =“ Scripts / require.js”> </ script>,但是新错误: 尚未为context加载 。
我尝试使用systemjs而不是require.js,我添加了<script> System.import('scripts / app.js'); </ script>我得到了404访问“ Scripts / vue”(应用程序中的require)的信息。 js),其余app.js不会执行。
注意:我不使用tsconfig.json
我很惊讶,因为我的记忆中,jQuery的参考与打字稿0.9一起工作
我完全迷路了。 帮我 ! 谢谢社区!
我通常通过创建globals.d.ts
文件来解决您遇到的问题, globals.d.ts
文件负责设置代码所期望的全局环境。 在您的情况下,例如:
import * as _Vue from "vue";
declare global {
const Vue: typeof _Vue;
}
这样一来,编译器将在全局空间中看到Vue
符号,该符号的类型与“ vue”模块导出的符号相同。
使用上面的文件,它将编译:
const q = new Vue();
请注意,您将不得不使用tsconfig.json
。 即使是一个空的作品。 (“空”是指仅包含一个空JSON结构的文件: {}
。)否则,您将必须在命令行中列出所有要编译的文件,包括globals.d.ts
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.