为什么我不能在节点中设置时刻语言环境?

Him*_*ors 3 javascript node.js express momentjs

我正在运行一个节点应用程序,这是我在 app.js 中的全部内容:

var moment = require('moment');
moment().locale('fr');
console.log(moment.locale())
Run Code Online (Sandbox Code Playgroud)

我希望它输出 'fr' 但它输出 'en',当我

runjs app.js
Run Code Online (Sandbox Code Playgroud)

node_modules/moment/locale 中有一个 fr 文件夹。

这是我的包裹:

{
  "name": "zenqa",
  "version": "1.0.0",
  "description": "Faq for Zenconomy.se",
  "main": "index.js",
  "dependencies": {
    "body-parser": "^1.14.2",
    "concat-files": "^0.1.0",
    "express": "^4.13.3",
    "marked": "^0.3.5",
    "moment": "^2.11.2",
    "mustache-express": "^1.2.2",
    "node-sass-middleware": "^0.9.7",
    "php-unserialize": "0.0.1",
    "requestify": "^0.1.17",
    "validator": "^4.8.0"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Kristoffer Nolgren",
  "license": "ISC",
  "repository": {
    "type": "git",
    "url": "git@github.com:kristoffernolgren/ZenqaMiddleware.git"
  }
}
Run Code Online (Sandbox Code Playgroud)

ama*_*hit 7

根据文档,存在阻止加载 moment.locale 的错误。所以你可以使用下面的代码。

var moment = require('moment');
require('moment/locale/fr');
console.log(moment.locale());
Run Code Online (Sandbox Code Playgroud)


Glo*_*ogo 6

花了几个小时才意识到我必须从以下位置导入语言环境/distdir 导入区域设置。也许这只是由我的设置引起的,但可能对某人有帮助

\n
import moment from \'moment\';\nimport \'moment/dist/locale/fr\';\n\nmoment.locale(\'fr\');\n
Run Code Online (Sandbox Code Playgroud)\n

测试

\n
import fr1 from \'moment/dist/locale/fr\';\nimport fr2 from \'moment/locale/fr\';\n\nconsole.log(fr1); // Locale\xc2\xa0{_calendar: {\xe2\x80\xa6}, ... }\nconsole.log(fr2); // {}\n\n
Run Code Online (Sandbox Code Playgroud)\n