我在将模块导入流星外壳时遇到了一些麻烦。
简单示例:
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。
谢谢!
答案 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
链),则它将无法导入。