为什么 amd loader 不能加载脚本?
Why can't amd loader load a script?
我正在尝试使模块代码工作。到目前为止,我有以下代码:
// third_party/test/Test.ts
export function test():void
{
console.log("QWERTY");
}
// Main.ts
// import {test} from "./third_party/test/Test"
require([], function () {
console.log("Loaded");
}
// index.html
<!DOCTYPE html>
<html lang="en">
<head>
<script data-main="build/library" type="text/javascript" src="scripts/third_party/require/require.js"></script>
</head>
</html>
// tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "amd",
"sourceMap": true,
"outFile": "build/library.js"
}
}
请注意 Main.ts
中注释的 import
语句。此代码按预期工作 - 我可以看到输出消息。但是,一旦我在 Main.ts
中取消注释 import
,我就什么也看不到了。没有错误或警告。
因为我使用的是 outFile
编译器选项,所以我只有一个 js
文件。
您编译生成的文件包含如下定义的模块:
define("third_party/test/Test", ["require", "exports"], function (require, exports) {
// ...
define("Main", ["require", "exports"], function (require, exports) {
// ...
注意 define
的第一个参数。这些是 RequireJS 已知的模块名称。您的 data-main
请求名为 build/library
的模块。 您的包中没有此名称的模块。
您需要让 RequireJS 加载 Main
。这是一个简单的方法:
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript" src="node_modules/requirejs/require.js"></script>
<script>
require.config({
// All modules are under the "build" path.
baseUrl: "build",
// The "library" bundle contains the module "Main" so when
// "Main" is requested, look for it in "library".
bundles: {
"library": ["Main"],
},
});
require(["Main"]);
</script>
</head>
</html>
我正在尝试使模块代码工作。到目前为止,我有以下代码:
// third_party/test/Test.ts
export function test():void
{
console.log("QWERTY");
}
// Main.ts
// import {test} from "./third_party/test/Test"
require([], function () {
console.log("Loaded");
}
// index.html
<!DOCTYPE html>
<html lang="en">
<head>
<script data-main="build/library" type="text/javascript" src="scripts/third_party/require/require.js"></script>
</head>
</html>
// tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "amd",
"sourceMap": true,
"outFile": "build/library.js"
}
}
请注意 Main.ts
中注释的 import
语句。此代码按预期工作 - 我可以看到输出消息。但是,一旦我在 Main.ts
中取消注释 import
,我就什么也看不到了。没有错误或警告。
因为我使用的是 outFile
编译器选项,所以我只有一个 js
文件。
您编译生成的文件包含如下定义的模块:
define("third_party/test/Test", ["require", "exports"], function (require, exports) {
// ...
define("Main", ["require", "exports"], function (require, exports) {
// ...
注意 define
的第一个参数。这些是 RequireJS 已知的模块名称。您的 data-main
请求名为 build/library
的模块。 您的包中没有此名称的模块。
您需要让 RequireJS 加载 Main
。这是一个简单的方法:
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript" src="node_modules/requirejs/require.js"></script>
<script>
require.config({
// All modules are under the "build" path.
baseUrl: "build",
// The "library" bundle contains the module "Main" so when
// "Main" is requested, look for it in "library".
bundles: {
"library": ["Main"],
},
});
require(["Main"]);
</script>
</head>
</html>