Khắc phục sự cố lỗi triển khai chính sách JavaScript

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

InvalidResourceUrlFormat

Thông báo lỗi

Không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge với thông báo lỗi sau:

Error Deploying Revision revision_number to environment
Invalid resource url format. Resource url is invalid_URL.

Thông báo lỗi mẫu

Error Deploying Revision 1 to test
Invalid resource url format. Resource url is jsc:add_variables.js.

Ảnh chụp màn hình mẫu

Nguyên nhân

Nếu định dạng của URL tài nguyên được chỉ định trong phần tử <ResourceURL> hoặc <IncludeURL> của chính sách JavaScript không hợp lệ, thì proxy API sẽ không triển khai được.

Dưới đây là định dạng chính xác để chỉ định URL tài nguyên:

<ResourceURL>jsc://<file_name>.js</ResourceURL>
<IncludeURL>jsc://<file_name>.js</IncludeURL>

Ví dụ: nếu phần tử <ResourceURL> được chỉ định như minh hoạ dưới đây, thì proxy API sẽ không triển khai được vì không tuân theo mẫu quy định:

<ResourceURL>jsc:add_variables.js</ResourceURL>

Chẩn đoán

  1. Xác định định dạng URL tài nguyên không hợp lệ dùng trong chính sách JavaScript. Bạn có thể tìm thấy thông tin này trong thông báo lỗi. Ví dụ: trong lỗi sau, định dạng URL tài nguyên không hợp lệ là jsc:add_variables.js.

      Error Deploying Revision 1 to test
        Invalid resource url format. Resource url is jsc:add_variables.js.
    
  2. Kiểm tra tất cả các chính sách JavaScript trong Proxy API cụ thể nơi xảy ra lỗi. Nếu có bất kỳ chính sách JavaScript nào mà trong đó URL tài nguyên được chỉ định trong phần tử <ResourceURL> hoặc <IncludeURL> khớp với mục nhập không hợp lệ đã xác định ở bước #1 ở trên, thì đó chính là nguyên nhân gây ra lỗi.

    Ví dụ: chính sách sau đây chỉ định URL tài nguyên là jsc:add_variables.js, khớp với nội dung trong thông báo lỗi:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-TotalVariable">
        <DisplayName>js-TotalVariable</DisplayName>
        <Properties/>
        <ResourceURL>jsc:add_variables.js</ResourceURL>
    </Javascript>
    

    Vì URL tài nguyên được chỉ định là jsc:add_variables.js không hợp lệ nên không thể triển khai Proxy API với lỗi:

    Invalid resource url format. Resource url is jsc:add_variables.js.
    

Độ phân giải

Đảm bảo rằng định dạng URL tài nguyên được chỉ định trong phần tử <ResourceURL> hoặc <IncludeURL> của chính sách JavaScript là hợp lệ. Ví dụ:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-TotalVariable">
    <DisplayName>js-TotalVariable</DisplayName>
    <Properties/>
    <ResourceURL>jsc://add_variables.js</ResourceURL>
</Javascript>

InvalidResourceUrlReference

Thông báo lỗi

Không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge với thông báo lỗi sau:

Error Deploying Revision revision_number to environment
Invalid resource url ref invalid_reference in policy policy_name in org_name

Thông báo lỗi mẫu

Error Deploying Revision 8 to test
Invalid resource url ref jsc://dependent_js.js in policy js-TotalVariable in aprabhashankar-eval

Ảnh chụp màn hình mẫu

Nguyên nhân

Nếu các phần tử <ResourceURL><IncludeURL> tham chiếu đến một tệp JavaScript không tồn tại thì proxy API sẽ không triển khai được.

Nếu đang triển khai gói proxy từ máy cục bộ, bạn phải lưu trữ các tệp nguồn JavaScript trong /apiproxy/resources/jsc. Trong trường hợp này, các tệp nguồn nằm trong phạm vi proxy API.

Trong giao diện người dùng Edge, các tệp nguồn JavaScript xuất hiện trong jsc ở phần tập lệnh của ngăn Trình điều hướng của trình chỉnh sửa proxy API. Bạn cũng có thể lưu trữ tệp tài nguyên trong kho lưu trữ cấp tổ chức và cấp môi trường (để cung cấp mã JavaScript cho tất cả các proxy trong một tổ chức hoặc môi trường chẳng hạn).

Lỗi này sẽ xảy ra nếu hệ thống không tìm thấy tệp tài nguyên nào được chỉ định trong chính sách trong bất kỳ phạm vi có sẵn nào (người dùng proxy, môi trường hoặc tổ chức).

Chẩn đoán

  1. Xác định chính sách JavaScript nơi xảy ra lỗi và chính sách có chứa tham chiếu URL tài nguyên không hợp lệ. Bạn có thể tìm thấy thông tin này trong thông báo lỗi. Ví dụ: trong lỗi sau, tên chính sách là js-TotalVariable và giá trị tham chiếu URL tài nguyên không hợp lệ là jsc://dependent_js.js.

    Invalid resource url ref jsc://dependent_js.js in policy js-TotalVariable in aprabhashankar-eval
    
  2. Xác minh rằng tham chiếu URL tài nguyên được chỉ định trong chính sách JavaScript không thành công khớp với giá trị xác định trong thông báo lỗi (bước #1 ở trên). Ví dụ: Chính sách sau đây chỉ định tham chiếu URL tài nguyên là jsc://dependent_js.js, khớp với nội dung trong thông báo lỗi:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-TotalVariable">
      <DisplayName>js-TotalVariable</DisplayName>
      <Properties/>
      <ResourceURL>jsc://add_variables.js</ResourceURL>
      <IncludeURL>jsc://dependent_js.js</IncludeURL>
    </Javascript>
    
  3. Kiểm tra xem tệp nguồn được xác định trong tệp bước #1 có thuộc gói Proxy API cụ thể hay không hoặc có tồn tại trong phạm vi tổ chức hoặc môi trường hay không.

    1. Để kiểm tra xem tệp có thuộc Gói proxy API cụ thể hay không, hãy làm theo một trong các bước bên dưới:
      1. Trong giao diện người dùng Edge, hãy kiểm tra xem tệp này có nằm trong phần tập lệnh của proxy API hay không.
      2. Tải gói Proxy API xuống và tìm kiếm xem tệp có tồn tại hay không.
    2. Nếu tệp đó không thuộc gói Proxy API cụ thể, hãy kiểm tra xem tệp đó có tồn tại ở cấp tổ chức hoặc môi trường hay không. Bạn có thể sử dụng Resource Files API (API Tệp tài nguyên) cho cuộc điều tra này.

    Nếu tệp không tồn tại ở cấp Proxy API, tổ chức hoặc môi trường thì đó là nguyên nhân gây ra lỗi.

    Trong ví dụ được mô tả ở trên, hãy nhớ lại rằng tên tệp JavaScript không hợp lệ là dependent_js.js. Trong ảnh chụp màn hình bên dưới, hãy lưu ý rằng tệp được chỉ định làm URL tài nguyên trong chính sách không xuất hiện trong mục Tập lệnh. Do đó, API này không phải là một phần của Proxy API. Nếu tệp không tồn tại ở cấp tổ chức hoặc môi trường, thì quá trình triển khai Proxy API sẽ không thành công do lỗi:

    Invalid resource url ref jsc://dependent_js.js in policy js-TotalVariable in aprabhashankar-eval
    

Độ phân giải

Đảm bảo rằng các tệp JavaScript được chỉ định trong các phần tử <ResourceURL><IncludeURL> tham chiếu đến một tệp hợp lệ tồn tại ở cấp Proxy API, tổ chức hoặc môi trường.

Để sửa chính sách JavaScript mẫu nêu trên, hãy thêm tệp dependent_js.js vào gói Proxy API. Trong ảnh chụp màn hình bên dưới, bạn có thể thấy các tệp JavaScript được chỉ định trong phần tử <ResourceURL><IncludeURL> hiển thị trong phần tập lệnh của gói Proxy API.

WrongResourceType

Thông báo lỗi

Không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge với thông báo lỗi sau:

Error Deploying Revision revision_number to environment
Resource JavaScript_file is the wrong type. It is invalid_type: but Javascript steps use type jsc:.

Thông báo lỗi mẫu

Error Deploying Revision 2 to test
Resource js_checkType.js is the wrong type. It is node: but Javascript steps use type jsc:.

Ảnh chụp màn hình mẫu

Nguyên nhân

Lỗi này xảy ra trong quá trình triển khai nếu các phần tử <ResourceURL><IncludeURL> của chính sách JavaScript tham chiếu đến bất kỳ loại tài nguyên nào khác ngoài jsc (tệp JavaScript).

Ví dụ: nếu bạn khai báo phần tử <IncludeURL> như minh hoạ dưới đây, thì quá trình triển khai proxy API sẽ không thành công:

<IncludeURL>node://javascript-dependency.js</IncludeURL>

Nguyên nhân là do tham chiếu đến loại tài nguyên node không chính xác.

Chẩn đoán

  1. Xác định loại tài nguyên không hợp lệ được sử dụng trong Chính sách JavaScript. Bạn có thể tìm thấy thông tin này trong thông báo lỗi. Ví dụ: trong lỗi sau, loại tài nguyên không hợp lệ là node.

    Resource js_checkType.js is the wrong type. It is node: but Javascript steps use type jsc:.
    
  2. Kiểm tra tất cả các chính sách JavaScript trong Proxy API cụ thể nơi xảy ra lỗi. Nếu có bất kỳ chính sách JavaScript nào mà tài nguyên được chỉ định trong phần tử <ResourceURL> hoặc <IncludeURL> khớp với loại tài nguyên không hợp lệ đã xác định ở Bước 1 ở trên, thì đó chính là nguyên nhân gây ra lỗi.

    Ví dụ: chính sách sau đây chỉ định loại tài nguyên là node, khớp với nội dung trong thông báo lỗi:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-TotalVariable">
        <DisplayName>js-TotalVariable</DisplayName>
        <Properties/>
        <ResourceURL>node://js_checkType.js</ResourceURL>
        <IncludeURL>jsc://javascript-dependency.js</IncludeURL>
    </Javascript>
    

    Vì loại tài nguyên được chỉ định là node không hợp lệ nên không thể triển khai Proxy API với lỗi:

    Resource js_checkType.js is the wrong type. It is node: but Javascript steps use type jsc:.
    

Độ phân giải

Đảm bảo rằng các phần tử <ResourceURL><IncludeURL> trong chính sách JavaScript luôn tham chiếu đến loại tài nguyên jsc.

Để sửa ví dụ nêu trên, hãy sửa đổi phần tử <ResourceURL> để có loại tài nguyên jsc.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-TotalVariable">
    <DisplayName>js-TotalVariable</DisplayName>
    <Properties/>
    <ResourceURL>jsc://js_checkType.js</ResourceURL>
    <IncludeURL>jsc://javascript-dependency.js</IncludeURL>
</Javascript>

NoResourceURLOrSource

Thông báo lỗi

Không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge với thông báo lỗi sau:

Error Saving Revision revision_number
Bundle is invalid. Errors:[Entity : Policy-policy_name, No ResourceURL or Source;].

Thông báo lỗi mẫu

Error Saving Revision 10
Bundle is invalid. Errors:[Entity : Policy-js-example, No ResourceURL or Source;].

Ảnh chụp màn hình mẫu

Nguyên nhân

Lỗi này có thể khiến bạn không triển khai được chính sách JavaScript trong các trường hợp sau:

  1. Nếu phần tử <ResourceURL> không được khai báo hoặc nếu URL tài nguyên không được xác định trong phần tử này. Phần tử <ResourceURL> là phần tử bắt buộc.
  2. Đã khai báo phần tử <IncludeURL> nhưng URL tài nguyên không được xác định trong phần tử này. Phần tử <IncludeURL> là không bắt buộc nhưng nếu khai báo thì phải chỉ định URL tài nguyên trong phần tử <IncludeURL>.

Ví dụ: nếu bạn khai báo phần tử <IncludeURL> như minh hoạ dưới đây, thì quá trình triển khai proxy API sẽ không thành công:

<IncludeURL></IncludeURL>

Chẩn đoán

  1. Xác định chính sách JavaScript nơi xảy ra lỗi. Bạn có thể tìm thấy thông tin này trong thông báo lỗi. Ví dụ: trong lỗi sau, chính sách có tên là Policy-js-example:

    Bundle is invalid. Errors:[Entity : Policy-js-example, No ResourceURL or Source;].
    
  2. Trong tệp XML chính sách JavaScript không thành công, hãy thực hiện các bước kiểm tra sau:

    1. Bạn phải khai báo phần tử <ResourceURL> và xác định URL tài nguyên của phần tử này.
    2. Nếu khai báo phần tử <IncludeURL>, bạn phải chỉ định một URL tài nguyên trong đó. Bạn không bắt buộc phải khai báo phần tử <IncludeURL>.

    Nếu bất kỳ bước kiểm tra nào ở trên không thành công thì đó là nguyên nhân gây ra lỗi.

    Ví dụ 1: Chính sách sau đây chưa khai báo phần tử <ResourceURL>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-example">
        <DisplayName>js-example</DisplayName>
        <Properties/>
    </Javascript>
    

    Do phần tử <ResourceURL> không được khai báo nên quá trình triển khai Proxy API sẽ không thành công do lỗi:

    Bundle is invalid. Errors:[Entity : Policy-js-example, No ResourceURL or Source;].
    

    Ví dụ 2: Chính sách sau đây có phần tử <IncludeURL> trống.

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-example">
      <DisplayName>js-example</DisplayName>
      <Properties/>
      <ResourceURL>jsc://check_var.js</ResourceURL>
      <IncludeURL></IncludeURL>
  </Javascript>

Do phần tử <IncludeURL> không có URL tài nguyên nên quá trình triển khai Proxy API sẽ không thành công do lỗi:

  Bundle is invalid. Errors:[Entity : Policy-js-example, No ResourceURL or Source;].

Độ phân giải

Hãy đảm bảo những yêu cầu sau trong chính sách JavaScript:

  1. Phần tử <ResourceURL> được khai báo và URL tài nguyên được xác định trong phần tử này. Phần tử <ResourceURL> là phần tử bắt buộc.
  2. Nếu khai báo phần tử <IncludeURL>, bạn phải xác định URL tài nguyên bao gồm trong phần tử này. Phần tử <IncludeURL> là không bắt buộc nhưng nếu khai báo thì phải chỉ định URL tài nguyên trong phần tử <IncludeURL>.

    Để sửa Ví dụ 1 hiển thị ở trên, hãy bao gồm phần tử <ResourceURL> với một tệp JavaScript hợp lệ:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-example">
        <DisplayName>js-example</DisplayName>
        <Properties/>
        <ResourceURL>jsc://check_var.js</ResourceURL>
    </Javascript>
    

    Để sửa Ví dụ 2 ở trên, hãy đưa một tệp JavaScript hợp lệ vào phần tử <IncludeURL>

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-example">
        <DisplayName>js-example</DisplayName>
        <Properties/>
        <ResourceURL>jsc://check_var.js</ResourceURL>
        <IncludeURL>jsc://js_dependency.js</IncludeURL>
    </Javascript>