我有一个使用Coffeescript和Ember 2.7.1的EmberJS应用程序。
我将/
重定向到/student
。
当我打开我的应用程序时,让我们说www.something.com/~somebody/dist/
(是的,我需要~somebody/dist
部分),它按预期转到www.something.com/~somebody/dist/student
。
我还有其他页面,例如/settings
。如果我使用link-to
帮助程序转到设置页面,则可以正常运行。当我手动将网址从www.something.com/~somebody/dist/student
更改为www.something.com/~somebody/dist/settings
时,它不会加载该网页。
我收到无法加载资源:服务器响应状态为404(未找到)错误。
知道如何解决这个问题吗?
我的 router.coffee 文件:
`import Ember from 'ember'`
`import config from './config/environment'`
Router = Ember.Router.extend
location: config.locationType,
rootURL: config.rootURL
Router.map ->
@route 'student'
@route 'settings'
@route 'statistics'
@route 'directory'
`export default Router`
我的 routes / index.coffee 文件:
`import Ember from 'ember'`
IndexRoute = Ember.Route.extend
beforeModel: ->
@transitionTo('student')
`export default IndexRoute`
我的 routes / settings.coffee 文件:
`import Ember from 'ember'`
SettingsRoute = Ember.Route.extend()
`export default SettingsRoute`
我的 routes / student.coffee 文件:
`import Ember from 'ember'`
StudentRoute = Ember.Route.extend()
`export default StudentRoute`
我的 environment.js 文件:
/* jshint node: true */
module.exports = function(environment) {
var ENV = {
modulePrefix: 'something-frontend',
environment: environment,
rootURL: '/',
locationType: 'auto',
EmberENV: {
FEATURES: {
// Here you can enable experimental features on an ember canary build
// e.g. 'with-controller': true
}
},
APP: {
// Here you can pass flags/options to your application instance
// when it is created
}
};
if (environment === 'development') {
// ENV.APP.LOG_RESOLVER = true;
// ENV.APP.LOG_ACTIVE_GENERATION = true;
// ENV.APP.LOG_TRANSITIONS = true;
// ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
// ENV.APP.LOG_VIEW_LOOKUPS = true;
}
if (environment === 'test') {
// Testem prefers this...
ENV.baseURL = '/';
ENV.locationType = 'none';
// keep test console output quieter
ENV.APP.LOG_ACTIVE_GENERATION = false;
ENV.APP.LOG_VIEW_LOOKUPS = false;
ENV.APP.rootElement = '#ember-testing';
}
if (environment === 'production') {
ENV.location = 'hash';
ENV.rootURL = '/~somebody/dist'
}
return ENV;
};
答案 0 :(得分:1)
最后,我解决了在environment.js中将locationType设置为hash的问题。
nil
http://emberjs.com/api/classes/Ember.Location.html#toc_hashlocation
答案 1 :(得分:0)
您需要设置路线才能让您的应用程序进入。请确保您有routes / settings.js文件。
答案 2 :(得分:0)
这不是ember的问题,而是http服务器配置。您应该将您的http服务器配置为将所有与文件不匹配的请求重定向到index.html。
在nginx中,您可以使用以下内容:
location /~user/dist/ {
try_files $uri $uri/ /index.html?/$request_uri;
}