我有一些旧浏览器应用程序,并且需要迁移到TypeScript。因此,我在app.ts
中使用了以下内容,并针对AMD的ES6进行了编译(我希望AMD适用于浏览器):
import * as L from 'leaflet';
import * as LG from 'leaflet-geosearch';
import * as $ from 'jquery';
import * as d3 from 'd3';
编译为以下内容:
define(["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
});
//# sourceMappingURL=app.js.map
我使用以下HTML进行引用:
<head>
<script src="scripts/app.js"></script>
</head>
[将其加载到浏览器中时,我得到
未捕获的ReferenceError:未定义定义
所以我四处搜寻,并且知道这很可能是RequireJS的错误。遵循RequireJS的文档,位于https://requirejs.org/docs/node.html。我已经通过NPM下载RequireJS,因为我已经通过NPM安装了传单的依赖项。现在,我不再需要在HTML中引用我的app.js
了:
<head>
<script>
var requirejs = require('requirejs');
requirejs.config({ nodeRequire: require });
requirejs(['leaflet', 'scripts/app.js']);
</script>
</head>
但是现在我得到了
未定义要求
浏览器中没有功能require
。您已在浏览器中明确包含RequireJS:
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js"></script>
<script>
require(['leaflet', 'scripts/app.js']);
</script>
这将加载RequireJS,但可能会中断,因为指向leaflet
的路径可能是错误的。但是我想你可以解决这个问题:)