在 Meteor 中通过 'require' 导入 JSON 时出现问题

Issue when importing JSON via 'require' in Meteor

以下代码用于加载本地静态 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 包加载我的文件,但如果可以避免,我宁愿不添加另一个包。

感谢您的提示

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

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

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

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