Ember JS:定义未定义

时间:2016-03-19 04:02:51

标签: ember.js

我最近将我的应用程序从Ember 1.3升级到Ember 2.4.2。但是在使用ember build --env production将其部署到我的生产环境后,我注意到了一些问题。

第一个问题是每个脚本/样式表标记都附加了integrity属性,这使得无法加载这些资源。经过一些调查后,我决定只将这些属性的值替换为空。这允许应用程序下载资源,但我注意到控制台中出现错误,该错误在Ember创建的缩小的website.js文件上显示define is not defined。我无法在本地复制此问题,因为应用运行良好。我还可以采取哪些措施来调查此问题?这可能与我安装的某个插件有关,也可能与我删除的SRI完整性属性有关?

编辑:我刚尝试使用Ember构建和部署一个vanilla应用程序(例如ember new testApp and ember build --env production并遇到了同样的问题.Ember是否存在我不知道的问题?我不知道'认为它是我的服务器,因为我能够正常渲染一个简单的index.html。

2 个答案:

答案 0 :(得分:3)

我更喜欢使用最新的NodeJS(v5.8)和最新的npm。 您可以使用npm install -g npm更新您的npm。 The best way to install NodeJS

我想,你有最新的ember-cli。如果您不在项目之内,可以更新它:

$ cd ~
$ npm install -g ember-cli

我刚刚克隆了您的存储库。

$ git clone https://github.com/uioporqwerty/website.git
$ cd website
$ npm install && bower install
$ ember server

出现以下错误:

➜  website git:(master) ember s
version: 2.4.2
The Broccoli Plugin: [ConfigLoader] failed with:
Error: Attempting to watch missing directory: config
    at EventEmitter.Watcher_addWatchDir [as addWatchDir] (/Users/szines/projects/temp/website/node_modules/broccoli-sane-watcher/index.js:90:11)
    at /Users/szines/projects/temp/website/node_modules/ember-cli-broccoli/lib/builder.js:95:35
   ...

由于您的ember-cli项目中缺少几个重要文件,我只是运行ember init

$ ember init

在此过程中,您会看到一个问题。您可以使用' d'检查建议的更改,但它只会删除bootstrap和font-awesome,这很好,因为我们将使用ember install重新安装它们。

[?] Overwrite bower.json? (Yndh) Y

现在我们删除所有以前的bower和npm包,temp文件夹和dist文件夹。

$ rm -rf bower_components node_modules tmp dist
$ npm install && bower install

安装ember-bootstrapember-font-awesome

$ ember install ember-bootstrap
$ ember install ember-font-awesome

启动服务器:

$ ember server

你的应用就像一个魅力。在浏览器中打开localhost:4200。

您可以构建生产:

$ ember build --prod

所有文件都在/dist文件夹中。

或者使用服务器运行生产版本:

$ ember server --prod

享受你的新Ember! :)

更新

您可以使用ember-cli-update更新您的Ember应用:

$ npx ember-cli-update
$ npx ember-cli-update --run-codemods

来源:Update Ember.js app

答案 1 :(得分:2)

Zoltan的回答非常有助于成为解决问题的一部分。根据Zoltan的回答修复我的本地网站后,我发现了一些问题。

首先,Ember-Cli 2.4.2出现以下错误:

Could not find module ember-data/-private\system\references\record imported from ember-data/-private/system/references

此问题已在Github repo for ember-cli的主分支中得到解决,但它尚未进入npm repo。所以我做的是用npm remove -g ember-cli卸载ember-cli,然后按照github repo https://github.com/ember-cli/ember-cli上的开发说明进行操作。这解决了这个问题。

另外,我注意到我的nginx服务器没有提供js和css文件;我通过使用test.css和test.js创建index.html来测试这一点,并注意到服务器没有抛出这些文件。而不是试图找到问题,我注意到我的nginx在我的RPI上有点过时,它是在1.6.x版本,所以我认为这是更新它的好时机;我通过先删除旧版本然后运行此脚本https://gist.github.com/MattWilcox/402e2e8aa2e1c132ee24将其更新为1.9.7。之后我有了nginx 1.9.7,但我确实安装了apache2,这导致了自己的头痛并识别了默认网站,所以我删除了它。

最后,由于我的设置被覆盖,我从rsync备份中恢复了/ etc / nginx,只需复制该目录即可获得我的pi。

然后热潮,一切正常。花了一段时间但是https://www.uioporqwerty.com的所有内容似乎都运行得很好而且qualsys实验室报告工作正常https://www.ssllabs.com/ssltest/analyze.html?d=www.uioporqwerty.com所以我的所有设置都正常运行:)

很高兴让Ember-Cli正常工作。