为什么amd loader无法加载脚本?

时间:2017-04-28 11:30:13

标签: typescript requirejs

我正在努力使模块代码工作。到目前为止,我有以下代码:

// 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"
    }
}

请注意import中注释的Main.ts声明。此代码按预期工作 - 我可以看到输出消息。但是,只要我在import中取消注释Main.ts,我就什么都看不到。没有错误或警告。

由于我使用outFile编译器选项,因此我只有一个js文件。

1 个答案:

答案 0 :(得分:2)

编译生成的文件包含如下定义的模块:

define

注意data-main的第一个参数。这些是您的模块已知RequireJS的名称。您的build/library请求名为Main的模块。 您的捆绑包中没有此名称的此类模块。

您需要让RequireJS加载<!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> 。这是一个简单的方法:

<script language="javascript" type="text/javascript">
  function showCompany(catid) {
      document.form.submit();
  }
</script>  



<select name="cat_id" id="cat_id" onChange="showCompany(this.value);">
  <option value="">--Select--</option>
                       <?php
                        $sql_row1 = mysqli_query($mysqli,"SELECT * from categories");
                       while($sql_res1=mysqli_fetch_array($sql_row1))
                       {
                       ?>
                       <option value="<?php echo $sql_res1["category_id"]; ?>"><?php echo $sql_res1["category"]; ?></option>
                        <?php
                        }
                        ?>
</select>
                       <select name="company_id" id="company_id">

           <option value="">--Select--</option>
           <?php
           $sql_row = mysqli_query($mysqli,"SELECT * from subcategories where category_id='$_REQUEST[cat_id]'");

           while($sql_res=mysqli_fetch_array($sql_row))
           {
           ?>
           <option value="<?php echo $sql_res["subcategory_id"]; ?>"><?php echo $sql_res["subcategory_name"]; ?></option>
           <?php
           }
           ?>
</select>