首页 文章

在本地构建和运行良好的Polymer项目无法以'Unable to load import'错误构建Jenkins?

提问于
浏览
0

我有一个使用polymer-cli构建的web开发项目 . 在我的本地机器上,当我在项目文件夹中运行聚合物构建时,我能够成功构建项目 .

但是,如果我尝试在Jenkins上构建项目,则会因“无法加载导入”错误而失败 . 这是控制台输出,概述了错误

[es_feature_DFWAVPTEAM-20700-N5X7SV3DXUY4RYTUABJZDHFFNKSRTWQBDGZRTEGN3QAI3TVBXF7A] Running shell script
+ docker run --net=host --rm -u 500:500 -w /users/jenkins/workspace/es_feature_DFWAVPTEAM-20700-N5X7SV3DXUY4RYTUABJZDHFFNKSRTWQBDGZRTEGN3QAI3TVBXF7A -v /users/jenkins/workspace/es_feature_DFWAVPTEAM-20700-N5X7SV3DXUY4RYTUABJZDHFFNKSRTWQBDGZRTEGN3QAI3TVBXF7A:/users/jenkins/workspace/es_feature_DFWAVPTEAM-20700-N5X7SV3DXUY4RYTUABJZDHFFNKSRTWQBDGZRTEGN3QAI3TVBXF7A docker-registry.aeg.cloud/iconics/polymer:latest bash -c '
                echo
                echo -n "POLYMER_VERSION=" && polymer --version && echo -n "BOWER_VERSION=" && bower --version && env
                bower install
                polymer build
                '

POLYMER_VERSION=1.5.4
BOWER_VERSION=1.8.2
HOSTNAME=eptjnksbxmsdc03.ds.dtveng.net
PWD=/users/jenkins/workspace/es_feature_DFWAVPTEAM-20700-N5X7SV3DXUY4RYTUABJZDHFFNKSRTWQBDGZRTEGN3QAI3TVBXF7A
HOME=/home/jenkins
SHLVL=1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_=/usr/bin/env
info:    Clearing build/ directory...
info:    (default) Building...


<link rel="import" href="baseline-policy-basic-info.html">
                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

src/baseline-policies/baseline-policy-edit.html(5,24) error [could-not-load] - Unable to load import: 
error:   Promise rejection: Error: 1 error(s) occurred during build.
error:   Error: 1 error(s) occurred during build.
    at BuildAnalyzer._done (/usr/lib/node_modules/polymer-cli/node_modules/polymer-build/lib/analyzer.js:265:36)
    at BuildAnalyzer.<anonymous> (/usr/lib/node_modules/polymer-cli/node_modules/polymer-build/lib/analyzer.js:225:26)
    at Generator.next (<anonymous>)
    at fulfilled (/usr/lib/node_modules/polymer-cli/node_modules/polymer-build/lib/analyzer.js:17:58)
    at process._tickCallback (internal/process/next_tick.js:109:7)
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // ansiColor
[Pipeline] echo
script returned exit code 1

这是我的baseline-policy-edit.html文件:

<link rel="import" href="../../bower_components/polymer/polymer.html">
    <link rel="import" href="../../bower_components/polymer/polymer-element.html">
    <link rel="import" href="../../bower_components/dfw-styles/dfw-styles.html">
    <link rel="import" href="../../bower_components/dfw-styles/dfw-icon-styles.html">
    <link rel="import" href="../../bower_components/paper-button/paper-button.html">
    <link rel="import" href="baseline-policy-basic-info.html">

    <dom-module id="baseline-policy-edit">
      <template>
        <style include="dfw-styles dfw-icon-styles">
          .bottom-buttons{
            padding-top: 10px;
            margin: 30px;
            border-top: 1px solid #eaeaea;
          }
        </style>
        <!--TODO: have blank canvas element here that will be dynamically filled with polymer element input fields -->
        <baseline-policy-basic-info id="common" item-data="{{itemData}}" name="common"></baseline-policy-basic-info>

        <div class="buttom-buttons">
          <paper-button class="dfw-anchor" on-tap="_backToPolicies">Back to Table</paper-button>
        </div>
      </template>
      <script>
        class BaselinePolicyEdit extends Polymer.Element {
          static get is() { return 'baseline-policy-edit'; }

          static get properties() {
            return {
              itemData: {
                type: Object,
                value: {},
                notify:true,
                observer:"_setupSides"
              },
              changeView: {
                type: Boolean,
                value : false,
                notify: true,
                readOnly : true
              }
            }
          }
          static get observers() {  }

          _setupSides(){
            var ia;
            var switchItem;
            if(this.itemData.hasOwnProperty('header') || this.itemData.hasOwnProperty('newDomain')) {
              if(this.itemData.hasOwnProperty('newDomain')) {
                switchItem = this.itemData.newDomain;
                this.itemData.template = {};
              }
              else {
                switchItem = this.itemData.header.domain;
              }
              switchItem = switchItem.replace(/[^\w\s]/gi, '').toLowerCase();
              //this._splitFields(this.keystores[switchItem]);
            }
          }

          _backToPolicies(){
            this.dispatchEvent(new CustomEvent('baseline-policy-view', {bubbles : true, composed : true, detail:{item:true}}));
          }
        }

        customElements.define(BaselinePolicyEdit.is, BaselinePolicyEdit);
      </script>
    </dom-module>

这是我的baseline-policy-basic-info.html文件:

<link rel="import" href="../../bower_components/polymer/polymer.html">
<link rel="import" href="../../bower_components/polymer/polymer-element.html">
<link rel="import" href="../../bower_components/paper-input/paper-input.html">
<link rel="import" href="../../bower_components/paper-item/paper-item.html">
<link rel="import" href="../../bower_components/paper-listbox/paper-listbox.html">
<link rel="import" href="../../bower_components/paper-dropdown-menu/paper-dropdown-menu.html">

<dom-module id="baseline-policy-basic-info">
  <template>
    <style>
      :host {
        display: block;
        padding: 10px 20px;
      }
      .basic-info-body{
        margin: 30px;
      }
      paper-dropdown-menu {
        --paper-menu-button-dropdown: {
          width : 50%;
        }
      }
      paper-dropdown-menu, paper-input {
        width : 80%;
        display: inline-block;
      }
      paper-item {
        --paper-item-min-height: 36px;
      }
    </style>

    <div class="basic-info-body">
      <h1>Basic Information</h1>
      <paper-input id="bpName" label="Name" placeholder="Baseline Policy Name"></paper-input>
      <paper-input id="bpVersion" label="Version"></paper-input>
      <paper-input id="bpDescription" label="Description" placeholder="Describe the context of the baseline policy"></paper-input>
      <paper-input id="bpKeywords" label="Keywords" placeholder="Use comma to separate words: HBO, EST, non transactional"></paper-input>
      <!-- <paper-input id="bpDomain" label="Domain"></paper-input> -->
      <input is="iron-input" name="status" type="hidden" value$="[[statusSelected]]">
      <paper-dropdown-menu required label="Status"
                           no-animations error-message="Selection Required!">
        <paper-listbox id="bpStatus"  class="dropdown-content" attr-for-selected="value" selected="{{statusSelected}}" slot="dropdown-content">
          <template is="dom-repeat" items="{{status}}" as="option">
            <paper-item value="{{option.value}}">{{option.name}}</paper-item>
          </template>
        </paper-listbox>
      </paper-dropdown-menu>
    </div>

  </template>
  <script>
    class BaselinePolicyBasicInfo extends Polymer.Element {
      static get is() { return 'baseline-policy-basic-info'; }

      static get properties() {
        return {
          domain: {
            type: Array,
            value: []
          },
          status: {
            type : Array,
            value: [
              {
                name:"New",
                value:"new"
              },{
                name:"Active",
                value:"active"
              }, {
                name:"Inactive",
                value:"inactive"
              }
            ]
          },
          itemData: {
            type: Object,
            value: {},
            observer: "_showData"
          }
        }
      }

      _showData(){
        // TODO: fill in input fields if edit policy and info is available
      }
    }
    customElements.define(BaselinePolicyBasicInfo.is, BaselinePolicyBasicInfo);
  </script>
</dom-module>

不知道是什么导致了这个问题,我尝试了各种各样的事情,例如缺少import语句,重新运行bower install,因为我认为我意外地删除了我的prism-element组件,并改变了一些import语句的顺序 . 关于我应该如何解决这个问题的任何想法 .

1 回答

  • 0

    经过深思熟虑,我找到了一个解决方案,并认为我会在这里记录它,以防任何人遇到同样的问题 .

    我有一个名为baseline-policies-tab.html的父聚合物元素,其中baseline-policy-edit.html是子元素 . 要解决此问题,我必须将baseline-baseline-basic-info.html的import语句添加到baseline-policies-tab.html .

    另外,我更改了baseline-policy-edit.html中的import语句

    <link rel="import" href="baseline-policy-basic-info.html">
    

    <link rel="import" href="../../src/baseline-policies/baseline-policy-basic-info.html">
    

    我真的不知道为什么这会修复它,但如果有人有同样的问题,尝试在祖父母元素中添加import语句(如果有的话) .

相关问题