Aurelia PhantomJs 目标未定义
Aurelia PhantomJs target is undefined
我们有一个应用程序在 node 、 express server 和 aureliajs 上运行。我们希望通过预渲染启用 seo。所以我们安装了 prerender.io 和 prerender-node。
但是在尝试使用 prerender 呈现页面时,phantomjs 给出错误 TypeError: undefined is not an object (evaluating 'target.__useDefault')
代码是:
function ensureOriginOnExports(executed, name) {
var target = executed;
var key = void 0;
var exportedValue = void 0;
if (target.__useDefault) {
target = target['default'];
}
.
.
.
在供应商-bundle.js
ensureOriginOnExports 在两个地方使用第一个:
DefaultLoader.prototype.loadModule = function (id) {
var _this2 = this;
var existing = this.moduleRegistry[id];
if (existing !== undefined) {
return Promise.resolve(existing);
}
return new Promise(function (resolve, reject) {
require([id], function (m) {
_this2.moduleRegistry[id] = m;
resolve(ensureOriginOnExports(m, id));
}, reject);
});
};
第二个:
DefaultLoader.prototype.loadModule = function (id) {
var _this3 = this;
return System.normalize(id).then(function (newId) {
var existing = _this3.moduleRegistry[newId];
if (existing !== undefined) {
return Promise.resolve(existing);
}
return System.import(newId).then(function (m) {
_this3.moduleRegistry[newId] = m;
return ensureOriginOnExports(m, newId);
});
});
};
所以解决我的问题是,首先我使用了 bluebird polyfill 然后我不得不在 /src/intl.js 下添加 create intl.js polyfill .
我也必须加载 babel-polyfill。
看起来 phantom js 看起来是为了 i18n 支持的文件。
我们有一个应用程序在 node 、 express server 和 aureliajs 上运行。我们希望通过预渲染启用 seo。所以我们安装了 prerender.io 和 prerender-node。
但是在尝试使用 prerender 呈现页面时,phantomjs 给出错误 TypeError: undefined is not an object (evaluating 'target.__useDefault')
代码是:
function ensureOriginOnExports(executed, name) {
var target = executed;
var key = void 0;
var exportedValue = void 0;
if (target.__useDefault) {
target = target['default'];
}
.
.
.
在供应商-bundle.js
ensureOriginOnExports 在两个地方使用第一个:
DefaultLoader.prototype.loadModule = function (id) {
var _this2 = this;
var existing = this.moduleRegistry[id];
if (existing !== undefined) {
return Promise.resolve(existing);
}
return new Promise(function (resolve, reject) {
require([id], function (m) {
_this2.moduleRegistry[id] = m;
resolve(ensureOriginOnExports(m, id));
}, reject);
});
};
第二个:
DefaultLoader.prototype.loadModule = function (id) {
var _this3 = this;
return System.normalize(id).then(function (newId) {
var existing = _this3.moduleRegistry[newId];
if (existing !== undefined) {
return Promise.resolve(existing);
}
return System.import(newId).then(function (m) {
_this3.moduleRegistry[newId] = m;
return ensureOriginOnExports(m, newId);
});
});
};
所以解决我的问题是,首先我使用了 bluebird polyfill 然后我不得不在 /src/intl.js 下添加 create intl.js polyfill .
我也必须加载 babel-polyfill。
看起来 phantom js 看起来是为了 i18n 支持的文件。