gpt4 book ai didi

javascript - 使用浏览器化 Node 应用程序访问 module.exports

转载 作者:行者123 更新时间:2023-11-30 20:15:34 25 4
gpt4 key购买 nike

我们正在尝试浏览器化我们的 Node 应用程序

示例文件(index.js)

module.exports = {
index: () => 'test',
};

浏览器命令

browserify src/index.js > dist/bundle.js --node

如果我们使用文件来要求和控制台

console.log(require('src/index'));   // { index: [Function: index] }
console.log(require('dist/bundle')); // { }

我们的期望是bundle.js 会导出与index.js 相同的内容。

任何人都可以指出我们做错或遗漏的地方吗?


其他信息

~这不是我们的应用,这是演示该问题的示例

我们目前正在将整个应用程序压缩到 AWS Lambda,其入口点为 src/index.index,目标是仅发送bundle.js 文件并能够获得该条目点bundle.index

bundle.js

(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
module.exports = {
index: () => 'test',
};

},{}]},{},[1]);

最佳答案

您需要使用--standalone标志。如果我重现您在问题中描述的设置并执行:

$ browserify src/index.js --standalone mylib > dist/bundle.js

然后我可以在其上运行交互式 Node session ,并按照您期望的方式使用该库:

$ node
> require("./dist/bundle").index()
'test'

--standalone 标志告诉 Browserify 将您的代码包装在 UMD stub 中。它允许将包加载为 CommonJS 模块、AMD 模块或纯脚本(即不使用模块系统)。您通过 --standalone 传递的参数指示您的库在“纯脚本”情况下将采用什么名称。因此,在上面的示例中,如果您要在没有任何模块系统的浏览器中加载库,则可以将 index 运行为 mylib.index()

关于javascript - 使用浏览器化 Node 应用程序访问 module.exports,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51952879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com