【发布时间】:2021-07-18 18:55:22
【问题描述】:
我有一个脚本,我想使用 JS 模块公开一个函数,这个脚本是使用 esbuild 编译的。
预编译文件(index.mjs)
const NakamaWrapper = require("./nakama").default
var NakamaJS;
export default function InitNakama(host, port, useSSL) {
NakamaJS = new NakamaWrapper(host, port, useSSL);
NakamaJS.initiate();
}
esbuild 任务
"build-dev": "./node_modules/.bin/esbuild ./src/index.mjs --bundle --sourcemap --target=es2015 --outfile=./dist/dev/pc-nakama.js",
html 中的代码:
import * as NakamaJS from "./pc-nakama.js";
NakamaJS.InitNakama("192.168.100.50", 7350, false);
错误:
NakamaJS.InitNakama is not a function
【问题讨论】:
-
我对 esbuild 不熟悉,但如果它像 webpack 等其他打包工具一样工作,那么您还需要将导入脚本与您的模块一起编译。这当然意味着导入脚本不能是html文件,必须是js文件。这些系统的工作方式假设 html 文件只获取您的脚本,而没有做其他任何事情。你应该在 js 文件中做所有事情。
-
没关系,我从 html 脚本标签加载了一个 IIFE 之外的模块,它可以工作。
标签: javascript es6-modules es6-module-loader esbuild