Meteor Shell,无法从任何文件夹导入文件:错误:找不到模块'/imports/api/donuts/collection.js'

时间:2016-11-04 05:25:57

标签: node.js shell meteor import es6-modules

我在将模块导入流星外壳时遇到了一些麻烦。

简单示例:

1.创建新项目(meteor create myproject)

2.创建文件/imports/api/donuts/collection.js并粘贴内容:

 // file: /imports/api/donuts/collection.js
 import { Mongo } from 'meteor/mongo';
 const Donuts = new Mongo.Collection('donuts');
 export default Donuts;

3.运行meteor shell并通过以下方式导入文件:

import Donuts from '/imports/api/donuts/collection.js'

比这个错误命中:

Error: Cannot find module '/imports/api/donuts/collection.js'
at Function.require.resolve (packages/modules-runtime.js:129:19)
at Module.resolve (packages/modules-runtime.js:81:25)
at Module.Mp.import (/home/ec2-user/.meteor/packages/modules/.0.7.7.mccaq7++os+web.browser+web.cordova/npm/node_modules/reify/lib/runtime.js:61:29)
at repl:1:-37
at packages/shell-server/shell-server.js:458:25
at /home/ec2-user/.meteor/packages/promise/.0.8.8.i94065++os+web.browser+web.cordova/npm/node_modules/meteor-promise/fiber_pool.js:32:39

怎么了?文件权限没问题,我从项目根目录启动meteor shell。

谢谢!

1 个答案:

答案 0 :(得分:1)

Meteor最初使用fseek()加载了所有源文件。

在更新的版本(大约v1.3)中,它以不同的方式处理default load order。其中一个目录是导入

  

任何名为<VirtualHost *:80> #ServerAdmin admin@test.com ServerName mysmfony.com ServerAlias www.mysymfony.com DocumentRoot /var/www/symfony/web DirectoryIndex app_dev.php <Directory /var/www/symfony/web> AllowOverride All Options All </Directory> ErrorLog ${APACHE_LOG_DIR}/mysymfony.com.log CustomLog ${APACHE_LOG_DIR}/mysymfony.com.log combined </VirtualHost> 的目录都不会在任何地方加载,必须使用imports/导入文件。

     

(来自Meteor文档)

使用shell时,只能导入构建中包含的资源。如果您尝试导入的模块(文件)未包含在导入树中(从import目录之外的某处开始的import链),则它将无法导入。