首页 > 解决方案 > 在 Meteor 中通过“require”导入 JSON 时出现问题

问题描述

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

感谢您的提示

标签: meteor

解决方案


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

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

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

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

推荐阅读