我是Meteor的新手,正在尝试将javascript文件导入:skel.min.js,skel-layout.min.js和skel-viewport.min.js到项目中。
这3个文件位于client / js路径(client/js/skel.min.js
,client/js/skel-layout.min.js
和client/js/skel-viewport.min.js
)上。
我在“ client / baseLayout / baseLayout.js”中具有基本布局,并且交付如下:
import angular from 'angular';
import angularMeteor from 'angular-meteor';
import uiRouter from 'angular-ui-router';
import * as skel from '../js/skel.min.js';
(function ($) {
skel.breakpoints ({
xlarge: '(max-width: 1680px)',
large: '(max-width: 1280px)',
medium: '(max-width: 980px)',
small: '(max-width: 736px)',
xsmall: '(max-width: 480px)',
'xlarge-to-max': '(min-width: 1681px)',
'small-to-xlarge': '(min-width: 481px) and (max-width: 1680px)'
});
.
.
.
但这总是向我显示以下错误:
Uncaught ReferenceError: skel is not defined
at skel-layout.min.js (app.js? hash = e2c356f13dbdbc8f5ea02b405b7c429aff6b8bef: 699)
at fileEvaluate (modules-runtime.js? hash = 8587d188e038b75ecd27ed2469a52b269e38fb62: 343)
at require (modules-runtime.js? hash = 8587d188e038b75ecd27ed2469a52b269e38fb62: 238)
at app.js? hash = e2c356f13dbdbc8f5ea02b405b7c429aff6b8bef: 1157
我试图移动文件,但它也不起作用。
我究竟做错了什么?
我的包裹:
# Meteor packages used by this project, one per line.
# Check this file (and the other files in this directory) into your repository.
#
# 'meteor add' and 'meteor remove' will edit this file for you,
# but you can also edit it by hand.
[email protected] # Packages every Meteor app needs to have
[email protected] # Packages for a great mobile UX
[email protected] # The database Meteor supports right now
[email protected] # Compile .html files into Meteor Blaze views
[email protected] # Reactive variable for tracker
[email protected] # Meteor's client-side reactive programming library
[email protected] # CSS minifier run for production mode
[email protected] # JS minifier run for production mode
[email protected] # ECMAScript 5 compatibility for older browsers
[email protected] # Enable ECMAScript2015+ syntax in app code
[email protected] # Server-side component of the `meteor shell` command
[email protected] # Allow all DB writes from clients (for prototyping)
iron:router
twbs:bootstrap
rlespagnol:skeleton-css
johnantoni:meteor-skeleton
jquery
fourseven:scss
感谢
最佳答案
看起来问题不在于您发布的代码,但是当Meteor急切地加载文件时,它会执行两项操作。
它按字母顺序加载它们,因此skel-layout
在skel.min
之前运行,这是控制台中的错误。 skel.min
需要首先运行。
它将它们包装在一个新的闭包中,因此它们不会污染全局名称空间。
除此之外,由于skel.min
使用UMD模式,而Meteor使用common.js,它会在模块加载器中注册自身,以便可以使用require()
调用它,而不是将自身加载到全局窗口中。
查看skel
存储库,skel-layout
和skel-viewport
中的代码不使用UMD或尝试使用require()
或import
skel,它只是希望它在当前范围内可用。
换一种说法。 Skel已经提高了一半的模块模式。
幸运的是,有一个快速修复。
将所有三个文件放在client/compatibility
文件夹中,并在名称前加上加载顺序:
1-skel.min.js
2-skel-layout.min.js
3-skel-viewport.min.js
对于
compatibility
文件夹中的文件,Meteor不会将它们加载到新的闭包中,因此它们可以自由地污染全局范围。