【问题标题】:Issue when importing JSON via 'require' in Meteor在 Meteor 中通过“require”导入 JSON 时出现问题
【发布时间】:2019-04-08 06:25:44
【问题描述】:

以下代码用于加载本地静态 JSON 文件:

var stories = require('../stories/stories.json');

现在我想加载一个基于变量的文件,例如做这样的事情:

var storiesPath = '../stories/stories.json';
var stories = require(storiesPath);

但这会触发错误:

Error: Cannot find module '../stories/stories.json'
    at require (packages/modules-runtime.js:123:19)
    at meteorInstall.server.main.js (server/main.js:7:15)

有什么办法可以让它工作吗?我假设我可以通过 Meteor http 包加载我的文件,但如果可以避免的话,我宁愿不添加另一个包。

感谢您的提示

【问题讨论】:

  • 这对我来说实际上很好用,用fs 测试过:var x = 'fs'; require(x).readFile 很好用。
  • Npm.require??

标签: meteor


【解决方案1】:

就像我在评论中所说,您可以轻松地在 require 中使用变量,例如,

> var x = 'fs';
> require(x).readFile
[Function]

所以这不是您要处理的问题。你确定你的第一个案例确实有效吗?这将是令人惊讶的。我认为由于使用相对路径,您可能会遇到项目文件布局问题。我会远离那个。幸运的是,您可以很容易地使用asset!您可以将您的 json 文件放在项目文件夹中的 private/ 中,然后使用:

const stories = JSON.parse(Assets.getText('stories.json'));

【讨论】:

  • 我仍然不确定为什么我的要求从变量中获取的路径不起作用。可能不同之处在于,在您的测试中,您使用了我使用 JSON 文件的模块。无论如何: JSON.parse 选项就像一个魅力。非常感谢这个选项!
猜你喜欢
  • 1970-01-01
  • 2019-08-31
  • 2013-12-21
  • 2017-09-05
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多