简体   繁体   English

尝试将 Rollup 与 commonjs 结合使用时,为什么会出现“未捕获的 ReferenceError:exports is not defined”?

[英]Why am I getting “Uncaught ReferenceError: exports is not defined” when trying to use Rollup with commonjs?

I have the a project I am working on for fun to get UMD, ESM, and CommonJS examples working with rollup.我有一个我正在从事的项目,目的是让 UMD、ESM 和 CommonJS 示例与汇总一起工作。 The UMD and ESM ones work great but for the CommonJS one I am getting... UMD 和 ESM 的效果很好,但对于 CommonJS 来说,我得到了......

Uncaught ReferenceError: exports is not defined未捕获的 ReferenceError:未定义导出

The CommonJS output is... CommonJS 的输出是...

'use strict';

Object.defineProperty(exports, '__esModule', { value: true });

class SimpleTest{
    constructor(message){
        console.log(`Your message is ${message}`);
    }
}

exports.SimpleTest = SimpleTest;

The HTML is... 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>

Wouldn't exports come from RequireJS?出口不是来自 RequireJS 吗?

This is fixed by setting the module compiler option to es6 :这是通过将module编译器选项设置为es6es6

  {
  "compilerOptions": {     
    "module": "es6",
    "target": "es5",    
  }
}

Let me know if this works for you!让我知道这是否适合您!

It looks like you're trying to demonstrate amd instead of cjs .看起来您正在尝试演示amd而不是cjs It doesn't make sense to run cjs on browser since it only works on node env.在浏览器上运行cjs没有意义,因为它只适用于 node env。

You're trying to include require.js which supports amd on the browser, so you just simply switch your cjs to amd then it would work:您正在尝试在浏览器上包含支持amd require.js ,因此您只需将cjs切换到amd

{
  file: "./target/ng-demo.js",
  format: "amd" // instead of `cjs`
}

In case anyone is interested here is what I did to get CJS working...如果有人对此感兴趣,这是我为使 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 获取未捕获的 ReferenceError:未定义导出 - Getting Uncaught ReferenceError: exports is not defined 为什么会出现“ Uncaught ReferenceError:未定义userId”错误? - Why am I getting “Uncaught ReferenceError: userId is not defined” error? 我为什么会收到“ Uncaught ReferenceError:未定义反应” - Why am I getting “Uncaught ReferenceError: React not defined” 为什么我得到:Uncaught ReferenceError: response is not defined - why am i getting: Uncaught ReferenceError: response is not defined 为什么我得到 Uncaught ReferenceError: React is not defined? - Why am I getting Uncaught ReferenceError: React is not defined? 为什么我会收到 Uncaught ReferenceError: Plotly is not defined - Why am I getting an Uncaught ReferenceError: Plotly is not defined 无法为浏览器制作汇总包 memfs package; 获取“未捕获的 ReferenceError:未定义导出” - Can't make rollup bundle memfs package for browser; Getting "Uncaught ReferenceError: exports is not defined" 使用打字稿时出现“ Uncaught ReferenceError:未定义角度” - I am getting “Uncaught ReferenceError: angular is not defined” when using typescript 我可以从 CDN 使用 React-Select Async (AsyncSelect) 吗? (我收到未捕获的 ReferenceError:未定义导出) - Can I use React-Select Async (AsyncSelect) from a CDN? (I'm getting Uncaught ReferenceError: exports is not defined) 为什么我得到“ReferenceError:getElementById未定义”? - Why am I getting “ReferenceError: getElementById is not defined”?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM