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

时间:2019-04-07 13:09:31

标签: 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程序包加载文件,但是如果可以避免的话,我宁愿不添加其他程序包。

感谢您的提示

1 个答案:

答案 0 :(得分:0)

就像我在评论中说的那样,您可以轻松地在需求中使用变量,例如

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

所以这不是您要解决的问题。您确定您的第一种情况确实有效吗?这将令人惊讶。我认为您可能由于使用相对路径而遇到了项目文件布局问题。我会远离那个。幸运的是,您可以使用asset来轻松实现!您可以将json文件放在项目文件夹的private/中,然后使用:

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