У меня есть задача gulp, переносящая ESM в UMD:
gulp.Task("js-build",function(){
return gulp
.src('wwwroot/js/src/**/*.js')
.pipe(print())
.pipe(plumber())
.pipe(babel({
presets: ['@babel/env'],
plugins:[
'@babel/plugin-transform-modules-umd',
]
}))
//.pipe(uglify())
.pipe(gulp.dest('wwwroot/js/dist'))
})
Существует два файла js-кода, которые создаются из папки wwwroot / js / src
tape-machine.js
export class TapeMachine {
constructor(str) {
this.recordedMessage = str
}
play() {
console.log(this.recordedMessage)
}
}
main.js
import {
TapeMachine
} from './ tape-machine
var tapMachine = new TapeMachine('Hello World')
tapMachine.play()
Когда задание gulp завершено, у меня есть встроенный main.js следующим образом:
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(["./codes"], factory);
} else if (typeof exports !== "undefined") {
factory(require("./codes"));
} else {
var mod = {
exports: {}
};
factory(global.codes);
global.site = mod.exports;
}
})(this, function (_codes) {
"use strict";
var tapMachine = new _codes.TapeMachine('Hello World');
tapMachine.play();
});
Когда я запускаю main.js в браузере, возникает исключение
Uncaught TypeError: Cannot read property 'TapeMachine' of undefined
Я что-то пропустил при переносе esm вглоток?