javascript - 无法访问捆绑到同一个 Browserify 包中的模块之间的功能?
问题描述
前言:我已经阅读了几篇关于尝试从不在包中的代码访问 Browserify 包中的代码的 SO帖子。我不想那样做。我无法访问捆绑到同一个包中的模块之间的代码。
我使用 Browserify 将 Node.JS v.8.11.1 项目中的两个 Javascript 文件捆绑到一个独立的包中:
browserify solidity-helpers-misc.js create-game-page-support.js --standalone browserified > bundle.js
不幸的是,来自create-game-page-support.js文件的代码无法访问来自solidity-helpers-misc.js文件的代码。任何此类引用都是未定义的。我检查了browserified
Chrome 调试器中的命名空间并定义了它,但仅使用了基本的 Javascript 对象函数集,例如:toString() 等,仅此而已。
例如,此代码位于bundle.js中,来自solidity -helpers-misc.js文件:
function getNonceViaUuid(){
return uuidv4();
}
// Yes. Export the code so it works with require().
module.exports =
{
getNonceViaUuid: getNonceViaUuid,
};
}).call(this,require('_process'),"/../../../common/solidity-helpers-misc.js","/../../../common")
但是,当我尝试从来自create-game-page-support.js的bundle.js中的此代码访问getNonceViaUuid()函数时,如下代码片段所示:
$('#create-game-btn').click(
function(e)
{
console.log("Testing access to browserified file. Remember to add sourcemap later.");
var nonce = getNonceViaUuid();
...
调试器暂停并出现异常,抱怨getNonceViaUuid是undefined。正如我所说,我在调试器中检查了浏览器化的命名空间,它没有附加getNonceViaUuid。
注意,第一个文件solidity-helpers-misc.js是一个使用require()语句的服务器端文件。第二个文件create-game-page-support.js是一个客户端代码模块,我想访问第一个文件,但在客户端。这就是我尝试使用 Browserify 的原因,因此我可以在服务器和客户端上使用第一个文件中的代码。
如何跨在同一个 Browserify 包中捆绑在一起的模块访问功能?
解决方案
问题是我不需要客户端模块 create-game-page-support.js中的服务器端模块solidity-helpers-misc.js模块。通过将以下内容添加到我的客户端模块的顶部:
var solidty_helpers_misc = require('../../../common/solidity-helpers-misc');
然后使用该模块为getNonceViaUuid()调用添加前缀:
ar nonce = solidty_helpers_misc.getNonceViaUuid();
然后它起作用了。回想起来,在客户端使用require()的“外星人”感觉最初是让我感到困惑的地方。
推荐阅读
- javascript - 无法使用ajax获取php全局变量
- javascript - How to get values from the form array and form group functions..Angular
- python - 如何在数据框中使用 if 循环
- matrix - 用python求解线性代数方程。找到已知共轭积矩阵的向量
- unreal-engine4 - 更改画布覆盖可见性后未检测到单击事件
- c# - 使用 SQLiteConnection 从 sqlite 表中获取自定义列值
- arrays - 使材质 UI 主题的 backgroundImage 属性动态化
- r - 所有函数仅检查 R 中向量的最后一个元素
- javascript - 使用 Gsuite 在 Node.js 中创建和发送自动生成的电子邮件
- visual-studio - 类型 Task<> 存在于 Unity.Tasks 和 mscorelib 中(Unity 问题)