Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在常量中创建两个Mongo集合的网页包(angular meteor)_Meteor_Ionic2_Angular Meteor - Fatal编程技术网

在常量中创建两个Mongo集合的网页包(angular meteor)

在常量中创建两个Mongo集合的网页包(angular meteor),meteor,ionic2,angular-meteor,Meteor,Ionic2,Angular Meteor,我是新来的流星,所以请原谅我,如果这是一个基本的问题 我有一个Meteor应用程序,我也在使用Ionic2 但在启动Ionic客户端时,我在运行时遇到以下错误: 我相信它来自server/collections.ts,因为当我删除导出时,启动时不会出现错误,但当我尝试访问使用该集合的页面时,会出现以下错误: 但我还是犯了同样的错误 我认为我需要删除编译后的代码(.js和js.map文件)。有人知道这些在哪里吗?或者可以做一些清洁吗 更新 在(步骤3)中,它使用符号链接而不是实际文件。当我用符号链

我是新来的流星,所以请原谅我,如果这是一个基本的问题

我有一个Meteor应用程序,我也在使用Ionic2

但在启动Ionic客户端时,我在运行时遇到以下错误:

我相信它来自
server/collections.ts
,因为当我删除导出时,启动时不会出现错误,但当我尝试访问使用该集合的页面时,会出现以下错误:

但我还是犯了同样的错误

我认为我需要删除编译后的代码(
.js
js.map
文件)。有人知道这些在哪里吗?或者可以做一些清洁吗

更新

在(步骤3)中,它使用符号链接而不是实际文件。当我用符号链接设置它时,我没有得到这个错误。然而,为了让它在远程服务器上工作,我不得不用真实的文件替换符号链接

符号链接用于meteor项目,并指向Ionic项目中的文件,以避免重复

$ ln -s ../typings
$ ln -s ../tsconfig.json
$ ln -s ../tslint.json
更新

我正在运行
inonic-service
meteor

也许这就是问题所在?我的目录结构:

/theWhoZoo (ionic app)
/theWhoZoo/api (meteor app)
我运行:

/theWhoZoo/ionic serve
/theWhoZoo/api/meteor
我这样做的原因是因为他们这样做了

更新

我认为问题如下,但我不知道如何解决。

从Chrome开发工具中可以看到,有两个
collections.ts
。我不知道为什么,但这与
网页相关

当我调试它时,
collections.ts?97d5
运行良好,并获得
chats
集合。然后调用
collections.ts
,并出现错误,因为
chats
已经存在

webpack.config.js

import {Mongo} from 'meteor/mongo';
import {Chat, Message} from 'api/models';

export const Chats = new Mongo.Collection<Chat>('chats');
export const Messages = new Mongo.Collection<Message>('messages');
var camelCase = require('lodash.camelcase');
var upperFirst = require('lodash.upperfirst');
var webpack = require('webpack');

var isRelease = process.argv.indexOf('--release') > -1;

var config = module.exports = {
  entry: './app/app.ts',
  output: {
    path: __dirname + '/www/build/js',
    filename: 'app.bundle.js'
  },
  externals: [
    'cordova',
    resolveExternals
  ],
  resolve: {
    extensions: ['', '.webpack.js', '.web.js', '.ts', '.js'],
    alias: {
      api: __dirname + '/api/server'
    }
  },
  module: {
    loaders: [
      { test: /\.ts$/, loader: 'ts-loader' }
    ]
  },
  devtool: 'source-map'
};

if (isRelease) {
  config.plugins = [
    new webpack.optimize.UglifyJsPlugin({
      compress: { warnings: false }
    })
  ];
}

function resolveExternals(context, request, callback) {
  return meteorPack(request, callback) ||
    cordovaPlugin(request, callback) ||
    callback();
}

function cordovaPlugin(request, callback) {
  var match = request.match(/^cordova\/(.+)$/);
  var plugin = match && match[1];

  if (plugin) {
    plugin = camelCase(plugin);
    plugin = upperFirst(plugin);
    callback(null, 'window.cordova && cordova.plugins && cordova.plugins.' + plugin);
    return true;
  }
}

function meteorPack(request, callback) {
  var match = request.match(/^meteor\/(.+)$/);
  var pack = match && match[1];

  if (pack) {
    callback(null, 'window.Package && Package["' + pack + '"]');
    return true;
  }
}
只有一个collections.ts,但当它运行时,我可以从开发工具中看到两个

/theWhoZoo/api/server/collections.ts
所以,它一定与编译有关,在运行时有两个

看起来错误只出现在客户端上。我有一个调用服务器代码的测试实用程序,它调用它时没有错误

我可以发现它的名称来自:

theWhoZoo/www/build/js/app.bundle.js.map

..."webpack:///./api/server/collections.ts?97d5"...
我尝试删除此文件,但它只是从
ionic service
重新生成的

谢谢你的建议

谢谢

解决方案:

通过将
node\u模块
设置为符号链接,即仅具有一个
node\u模块
,修复了此问题

var camelCase = require('lodash.camelcase');
var upperFirst = require('lodash.upperfirst');
var webpack = require('webpack');

var isRelease = process.argv.indexOf('--release') > -1;

var config = module.exports = {
  entry: './app/app.ts',
  output: {
    path: __dirname + '/www/build/js',
    filename: 'app.bundle.js'
  },
  externals: [
    'cordova',
    resolveExternals
  ],
  resolve: {
    extensions: ['', '.webpack.js', '.web.js', '.ts', '.js'],
    alias: {
      api: __dirname + '/api/server'
    }
  },
  module: {
    loaders: [
      { test: /\.ts$/, loader: 'ts-loader' }
    ]
  },
  devtool: 'source-map'
};

if (isRelease) {
  config.plugins = [
    new webpack.optimize.UglifyJsPlugin({
      compress: { warnings: false }
    })
  ];
}

function resolveExternals(context, request, callback) {
  return meteorPack(request, callback) ||
    cordovaPlugin(request, callback) ||
    callback();
}

function cordovaPlugin(request, callback) {
  var match = request.match(/^cordova\/(.+)$/);
  var plugin = match && match[1];

  if (plugin) {
    plugin = camelCase(plugin);
    plugin = upperFirst(plugin);
    callback(null, 'window.cordova && cordova.plugins && cordova.plugins.' + plugin);
    return true;
  }
}

function meteorPack(request, callback) {
  var match = request.match(/^meteor\/(.+)$/);
  var pack = match && match[1];

  if (pack) {
    callback(null, 'window.Package && Package["' + pack + '"]');
    return true;
  }
}
/theWhoZoo/api/server/collections.ts
theWhoZoo/www/build/js/app.bundle.js.map

..."webpack:///./api/server/collections.ts?97d5"...