在 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'));
以下代码用于加载本地静态 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'));