如何将opening_hours.js包含在节点.js脚本中

How to include opening_hours.js into a node.js script?

本文关键字:js 包含 脚本 节点 hours opening      更新时间:2023-09-26

我想在node.js shell脚本中使用opening_hours.js。该库及其依赖项 SunCalc 在本地可用:

  • JS/suncalc.js
  • JS/opening_hours.js

我想在脚本中使用opening_hours.js如下:

#!/usr/bin/env node
// TODO: load libraries
var oh = new opening_hours('We 12:00-14:00');

感兴趣的可能是 javascript 文件中的以下摘录:

opening_hours.js

// make the library accessible for the outside world {{{
if (typeof exports === 'object') {
    var moment, SunCalc, i18n;
    // For Node.js.
    SunCalc = root.SunCalc || require('suncalc');
    try { // as long as it is an optional dependency
        moment = root.moment || require('moment');
    } catch (error_pass) { error_pass }
    try { // as long as it is an optional dependency
        i18n = require('./locales/core');
    } catch (error_pass) { error_pass }
    module.exports = factory(SunCalc, moment, i18n, holiday_definitions, word_error_correction, lang);
} else {
    // For browsers.
    root.opening_hours = factory(root.SunCalc, root.moment, root.i18n, holiday_definitions, word_error_correction, lang);
}
//* }}} */

SunCalc.js

// export as AMD module / Node module / browser variable
if (typeof define === 'function' && define.amd) define(SunCalc);
else if (typeof module !== 'undefined') module.exports = SunCalc;
else window.SunCalc = SunCalc;

问题是opening_hours.js希望SunCalc作为NPM模块安装。您需要更新您发布的代码中的 require 语句以指向本地 SunCalc 文件:

// make the library accessible for the outside world {{{
if (typeof exports === 'object') {
    var moment, SunCalc, i18n;
    // For Node.js.
    SunCalc = root.SunCalc || require('./suncalc'); // CHANGED
    try { // as long as it is an optional dependency
        moment = root.moment || require('moment');
    } catch (error_pass) { error_pass }
    try { // as long as it is an optional dependency
        i18n = require('./locales/core');
    } catch (error_pass) { error_pass }
    module.exports = factory(SunCalc, moment, i18n, holiday_definitions, word_error_correction, lang);
} else {
    // For browsers.
    root.opening_hours = factory(root.SunCalc, root.moment, root.i18n, holiday_definitions, word_error_correction, lang);
}
//* }}} */