Javascript 为什么我会得到;未捕获引用错误:未定义导出";尝试将汇总与commonjs一起使用时?
我有我正在为乐趣而工作的UMD、ESM和CommonJS示例,它们使用汇总。UMD和ESM的工作很好,但对于CommonJS的一个我得到 未捕获引用错误:未定义导出 CommonJS输出是Javascript 为什么我会得到;未捕获引用错误:未定义导出";尝试将汇总与commonjs一起使用时?,javascript,rollup,rollupjs,Javascript,Rollup,Rollupjs,我有我正在为乐趣而工作的UMD、ESM和CommonJS示例,它们使用汇总。UMD和ESM的工作很好,但对于CommonJS的一个我得到 未捕获引用错误:未定义导出 CommonJS输出是 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); class SimpleTest{ constructor(message){ console.log(`Your messag
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
class SimpleTest{
constructor(message){
console.log(`Your message is ${message}`);
}
}
exports.SimpleTest = SimpleTest;
HTML是
<html>
<body>
<script src="https://requirejs.org/docs/release/2.3.6/comments/require.js"></script>
<script>
require(["./target/ng-demo.js"], (dep)=>{
new dep.SimpleTest("ESM");
});
</script>
</body>
</html>
要求([“/target/ng demo.js”],(dep)=>{
新副简单测试(“ESM”);
});
导出不是来自RequireJS吗?这是通过将
模块编译器选项设置为es6
来解决的:
{
"compilerOptions": {
"module": "es6",
"target": "es5",
}
}
让我知道这是否适合你 看起来您试图演示的是amd
,而不是cjs
。在浏览器上运行cjs
没有意义,因为它只在节点env上工作
您试图在浏览器中包含支持amd
的require.js
,因此只需将cjs
切换到amd
即可:
{
file: "./target/ng-demo.js",
format: "amd" // instead of `cjs`
}
如果有人对此感兴趣,我是如何让CJS工作的
<html>
<body>
<script src="https://cdn.jsdelivr.net/npm/require1k@2.0.0/require1k.min.js"></script>
<script>
R(function (require, module, exports) {
const {SimpleTest} = require("./target/ng-demo.cjs");
new SimpleTest("commonjs");
});
</script>
</body>
</html>
R(功能(需求、模块、导出){
const{SimpleTest}=require(“./target/ng demo.cjs”);
新SimpleTest(“commonjs”);
});
很抱歉,这不起作用,因为它会导致ESM也变成ES5。谢谢,谢谢,谢谢,这就是答案。只是出于好奇,我如何在浏览器中使用commonjs文件?不。Cjs仅为节点设计