【问题标题】:Javascript Browserify, require function and run itJavascript Browserify,需要函数并运行它
【发布时间】:2017-07-07 13:01:18
【问题描述】:

我有这个浏览器化的小问题。我想需要一个自制的模块并立即运行它。

主文件:

(function() {
    require('./modules/initScrollReveal')();
    require('./modules/initChart')();
    require('./modules/initDatamap')();
  })();

模块:

exports.initChart = function () {
  // do stuff
};

现在我收到消息错误 "require(...) is not a function"require('./modules/initScrollReveal')();

Browserify 通过 Watchify 运行

watchify public-modules/res/js/main.js -o public/res/js/main.js

【问题讨论】:

  • 尝试分开做:require('./modules/initScrollReveal'); initScrollReveal();
  • @Kaddath 然后就是initScrollReveal is not a function
  • 啊是的你是对的,在browserify中需要返回对象,如果你可以做var a = require('thing');,那么做require('thing')();应该是有效的

标签: javascript node.js web browserify


【解决方案1】:

module.exports 允许在需要时像调用函数一样调用 initChart 函数。简单地设置导出将不允许函数被导出,因为节点导出对象 module.exports 引用。

改变

exports.initChart = function () {
  // do stuff
};

module.exports = function initChart  () {
  // do stuff
};

更多详情:browserify-handbook#exports

【讨论】:

  • 这很有趣,在我制作的浏览器版本的 uglifyjs 中,我找到了这两种语法,我想知道这种差异的细节,因为我的 uglify 有效,所以两者似乎都是有效的。 . 我什至有直接导出需求,例如exports.inherits = require('inherits');.. 我很好奇
  • 非常感谢您。非常有趣的是,第一个版本仍然可以在 Node 中运行,但在 Browserify 中却不行。
【解决方案2】:

试试:

(function() {
    require('./modules/initScrollReveal').initScrollReveal();
    require('./modules/initChart').initChart();
    require('./modules/initDatamap').initDatamap();
  })();

如果你的模块看起来像:

exports.initScrollReveal= function () {
  // do stuff
};

exports.initChart = function () {
  // do stuff
};

exports.initDatamap= function () {
  // do stuff
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多