javascript-尚未为上下文_加载TypeScript导出和导入模块名称.使用require([])
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-尚未为上下文_加载TypeScript导出和导入模块名称.使用require([]),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2289字,纯文字阅读大概需要4分钟。
内容图文
当我尝试在浏览器中运行应用程序时,在调试控制台窗口中出现以下消息:
Module name "Person" has not been loaded yet for context: _. Use require([])
当然,如果合并.ts文件的内容,则所有文件都可以正常工作.
我创建了Person.ts文件:
export interface IPerson {
firstName: string;
lastName: string;
}
export class Person implements IPerson {
private _middleName: string;
public set middleName(value: string) {
if (value.length <= 0)
throw "Must supply person name";
this._middleName = value;
}
public get middleName(): string {
return this._middleName;
}
constructor(public firstName: string, public lastName: string) { };
Validate() {
alert('test');
}
}
和app.ts文件:
import {Person} from "./Person"
class Employee extends Person {
Validate() {
alert('new test inside Employee');
}
}
let p1 = new Person("Shahar", "Eldad");
p1.Validate();
try {
p1.middleName = "";
}
catch (err) {
alert(err);
}
let p2 = new Employee("Shahar", "Eldad");
p2.Validate();
document.body.innerHTML = p1.firstName + " " + p2.lastName;
最后是我的index.html文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="windows-1255">
<title>Insert title here</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.2/require.min.js" data-main="app.js"></script>
</head>
<body>
</body>
</html>
最后是我的tsconfig.json文件:
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true,
"target": "es6"
},
"files": [
"app.ts",
"Person.ts"
]
}
我首先尝试与目标es5进行转译,然后移至es6(最后移至tsconfig.json文件)
更新
我确实喜欢@Louis,而且似乎可以正常工作-从问题中复制了所有文件,仅编辑了tsconfig.json以保存amd和es5.我看不到复制前后的任何区别.奇怪的.
解决方法:
如果希望RequireJS加载TypeScript编译器的输出,则使用“ module”:“ commonjs”肯定是错误的.您应该使用“ module”:“ amd”. (您可能还需要将目标更改回es5.)
您收到的错误是因为对于“ module”:“ commonjs”,编译器将为您从“ ./Person”导入{Person}输出与此类似的代码:
var _Person = require("./Person");
var Person = _Person.Person;
对require的调用将导致RequireJS执行,但将失败,因为RequireJS不直接支持此类代码.如果上面的代码位于这样的定义中,则它将起作用:
define(function (require) {
var _Person = require("./Person");
var Person = _Person.Person;
// Rest of the module.
});
当您使用“ module”:“ amd”时,编译器会生成与此代码段相似的代码,并且可以正常工作.
内容总结
以上是互联网集市为您收集整理的javascript-尚未为上下文_加载TypeScript导出和导入模块名称.使用require([])全部内容,希望文章能够帮你解决javascript-尚未为上下文_加载TypeScript导出和导入模块名称.使用require([])所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。