【问题标题】:How to require .json file with module.exports in nodeJS如何在 nodeJS 中使用 module.exports 要求 .json 文件
【发布时间】:2015-06-14 13:51:32
【问题描述】:

我习惯用这种方式创建 .json 文件

module.exports = [
{"year":2007,"month":1,"startDate":"2007-01-01","endDate":"2007-01-31"},
{"year":2007,"month":2,"startDate":"2007-02-01","endDate":"2007-02-28"},
{"year":2007,"month":3,"startDate":"2007-03-01","endDate":"2007-03-31"},
]

然后我要求他们像这样。

var dates = require('./JSON/dates.json');

过去,当我使用 nodejs 和 grunt 构建网站时,这一直有效。 但是现在我使用 nodeJS 创建一个服务器应用程序我收到了这个消息

语法错误:G:\Navision Reports\JS ReportServer\JSON\dates.json:意外的令牌消息。我不明白发生了什么事。它与 .js 文件完美配合。

请问有人知道为什么这不再有效吗?我知道如果我只是删除 var dates = require('./JSON/dates.json'); 我可以有一个 json 对象并将文件制作成一个 json 对象,但我真的不想重新组织所有这些数据。

【问题讨论】:

  • 好的,谢谢,我将使用 dates.js 代替。我知道它不是一个有效的 JSON 对象,但我仍然有点不明白为什么这在过去对我有用。

标签: javascript json node.js


【解决方案1】:

这不是有效的 JSON 文件,您可以在任何代码格式化程序中检查它是否存在语法错误:

module.exports = [
{"year":2007,"month":1,"startDate":"2007-01-01","endDate":"2007-01-31"},
{"year":2007,"month":2,"startDate":"2007-02-01","endDate":"2007-02-28"},
{"year":2007,"month":3,"startDate":"2007-03-01","endDate":"2007-03-31"},
]

请以有效的方式格式化您的 JSON,然后要求它或将 dates.json 更改为 dates.js

如果将文件保存为.json,则不必使用module.exports,实际上不能,因为node 内置支持需要.json 文件。你甚至不必使用JSON.parse

【讨论】:

  • (在 nodejs 中)这些天你可以 require 一个 json 文件,只需引用名称,但不使用 .json。例如 const jsondata = require("./myjsonfile") 在 vscode 我没有得到任何智能感知,但它确实有效(可能有一个扩展)。
【解决方案2】:

我认为您需要将文件另存为 *.js

require('./JSON/dates.js');

工作正常。

因为 module.exports 不再是格式良好的 JSON;这是javascript

【讨论】:

    猜你喜欢
    • 2012-09-26
    • 2020-08-31
    • 2014-04-01
    • 2021-04-23
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    相关资源
    最近更新 更多