以下代码可用于加载本地静态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程序包加载文件,但是如果可以避免的话,我宁愿不添加其他程序包。
感谢您的提示
答案 0 :(得分:0)
就像我在评论中说的那样,您可以轻松地在需求中使用变量,例如
> var x = 'fs';
> require(x).readFile
[Function]
所以这不是您要解决的问题。您确定您的第一种情况确实有效吗?这将令人惊讶。我认为您可能由于使用相对路径而遇到了项目文件布局问题。我会远离那个。幸运的是,您可以使用asset来轻松实现!您可以将json文件放在项目文件夹的private/
中,然后使用:
const stories = JSON.parse(Assets.getText('stories.json'));