Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我会得到;未捕获引用错误:未定义导出";尝试将汇总与commonjs一起使用时?_Javascript_Rollup_Rollupjs - Fatal编程技术网

Javascript 为什么我会得到;未捕获引用错误:未定义导出";尝试将汇总与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

我有我正在为乐趣而工作的UMD、ESM和CommonJS示例,它们使用汇总。UMD和ESM的工作很好,但对于CommonJS的一个我得到

未捕获引用错误:未定义导出

CommonJS输出是

'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仅为节点设计