node.js - 在ExpressJS自己的文件中提取方法:不能在模块外使用import语句
问题描述
我今天用 ExpressJS 制作了我的第一个应用程序。
问题是index.js
太大(600 行),我想将我的代码组织成不同的文件。
最简单的部分是静态日期函数。我有 5 个函数,我想将它们放入一个单独的文件中:
dates.js
import moment from "moment";
module.exports = {
getNextMonday: (firstDate) => {
let firstMonday = firstDate.add(1, "day").startOf('isoWeek');
if (!firstDate.isSame(firstMonday)) {
firstMonday = firstMonday.add(7, "day");
}
return firstMonday;
},
// Get the days in a array
getDays: (conso) => {
let days = conso.map(value => moment(value['date'], "DD-MM-YYYY HH:mm").format("DD"));
return days.filter(function (elem, pos) {
return days.indexOf(elem) === pos;
});
},
// Get the days in a array
getDaysWithHours: (conso) => {
let days = conso.map(value => value['date']);
// console.log(days);
return days.filter(function (elem, pos) {
return days.indexOf(elem) === pos;
});
},
getHourlyData: (data, monday) => {
return data.filter(item => {
const date = moment(item.date, "DD-MM-YYYY HH:mm");
// if moment(item.date, "DD-MM-YYYY HH:mm") + 7
if (isSameWeek(monday, date)) return item;
});
},
isSameWeek: (firstDay, secondDay) => {
let firstMoment = moment(firstDay);
let secondMoment = moment(secondDay);
return firstMoment.startOf('isoWeek').isSame(secondMoment.startOf('isoWeek'));
}
};
然后在 中index.js
,我尝试使用它们:
let date = require('./dates.js');
...
const monday = date.getNextMonday(firstDay);
但我收到一个错误:
import moment from "moment";
^^^^^^
SyntaxError: Cannot use import statement outside a module
at Module._compile (internal/modules/cjs/loader.js:891:18)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
at Module.load (internal/modules/cjs/loader.js:811:32)
at Function.Module._load (internal/modules/cjs/loader.js:723:14)
at Module.require (internal/modules/cjs/loader.js:848:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.<anonymous> (/home/julien/Code/customer_recap/index.js:13:12)
at Module._compile (internal/modules/cjs/loader.js:955:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
at Module.load (internal/modules/cjs/loader.js:811:32)
[nodemon] app crashed - waiting for file changes before starting...
看来我无法将 moment lib 导入我的新本地模块。
为什么 ?我应该怎么做?
解决方案
推荐阅读
- c - C 中的 FORWARD_NULL 与 UNINIT 覆盖率错误
- c# - 如何使用 Union 组合两个 linq 查询
- javascript - GoogleMaps API 在 html 文件中工作,但不在 JS 文件中
- hyperledger-fabric - 如何使用 Hyperledger Composer 将对等节点添加到现有的正在运行的 Hyperledger Fabric 区块链?
- trigonometry - quanteda textstat_simil 可以处理多少规模
- ajax - 通过 HTTP/2 在 ajax 中显示自定义错误消息
- html - 英雄形象不显示
- android - 没有在我的应用程序中显示多个谷歌帐户?
- email - 验证电子邮件是否用于贝宝
- r - 试图了解 eval(expr, envir = df) 的工作原理