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 支持的文件。