如何将opens_hours.js包含到node.js脚本中?

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

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

我想在脚本中使用opens_hours.js ,如下所示:

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

感兴趣的可能是下面的JavaScript文件摘录:

来自opens_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模块安装。 您需要更新您发布的指向本地SunCalc文件的代码中的require语句:

 // 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); } //* }}} */