【问题标题】:Meteor JS main.js only accepts 'imports' directory instead of 'client'Meteor JS main.js 只接受 'imports' 目录而不是 'client'
【发布时间】:2016-09-23 08:37:22
【问题描述】:

我是 Meteor 的新手,正在尝试基本的待办事项应用程序,但遇到了一些困难。教程提到将文件添加到“导入”,但是当我们运行 meteor create 时没有创建这个目录,也没有指示我们创建这样一个目录。在任何情况下,main.jsmain.htmlmain.css 都存储在client 目录中。当我创建了一个名为 api 的子目录并添加了 tasks.js 并尝试将其导入服务器端 main.js 时,应用程序崩溃了,因为它找不到该文件。

/server/main.js

import { Meteor } from 'meteor/meteor';
import '../client/api/tasks.js';

Meteor.startup(() => {
  // code to run on server at startup
});

当我将director 'client' 重命名为'imports' 时,应用程序神奇地不再崩溃,但突然间,客户端上没有渲染任何内容。服务器端 main.js 是否像关键字一样查找“导入”?为什么在“客户端”中找不到文件?

tasks.js

import { Mongo } from 'meteor/mongo';

export const Tasks = new Mongo.Collection('tasks');

【问题讨论】:

  • 只有当它存储在imports 目录中时,您才能ipmort。创建imports 文件夹并将您的api 移动到那里。然后在你的client/whatever 中导入东西。
  • 服务器无法看到名为 client 的目录中的文件,反之亦然

标签: javascript meteor


【解决方案1】:

默认情况下,Meteor 应用会在项目目录中加载所有 JS 文件,除非它位于某个特别命名的目录中。 imports 目录是这些特殊目录之一 - 只有当它们被其他文件明确 imported 时才会加载其中的文件。 client 目录也很特别,它的内容仅由客户端代码加载,而从不由服务器代码加载。但是,您不需要 import 文件夹中的 import 文件,因为 Meteor 会自动包含这些文件。

目前的建议是将您的大部分应用程序代码包含在ìmports 目录中,并且仅在需要时将其包含在import 中。默认的meteor create 命令不会为您创建此目录,因此您应该自己创建它。如果您阅读的教程没有告诉您创建一个,那么它应该。使用 ES6 import - export 系统有助于更好地构建代码并跟踪项目依赖关系。

关于Meteor目录结构的更多信息,推荐阅读Meteor guide中的相关章节。还有一个list of special directories

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 2020-12-23
    • 2019-06-30
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多