React / perspective-client versions

Hello,

It seems that the most recent version of "@inductiveautomation/perspective-client" is 2.1.16, which requires react version 16.11.0.

Is there any way of finding out which versions of the "perspective-client" package are available?

The repository does not appear to be browsable.
https://nexus.inductiveautomation.com/repository/node-packages/

Is it possible to use a more recent version of react ?

For example, I need version 16.14.0 or higher (17/18) to use an npm package.

Yes im pretty sure you should be able to use whatever react version you want.

1 Like

The version number of perspective-client should track with the version of Ignition. So that version number would have been for 8.1.16, and Ignition 8.1.33 will have version 2.1.33 of perspective-client.

As of Ignition 8.1.31 we're using React 18.2

1 Like

Thanks for the clarification.

The new versions of the package don't seem to be available to the public...

You can see the list of versions here :
https://nexus.inductiveautomation.com/repository/node-packages/@inductiveautomation/perspective-client

Did I miss something ?

Interesting. Let me ping the infra team to find out why it's not published automatically with each release.

1 Like

We've figured out how that fell off our process and the latest version should be published in the next couple of days. Thanks for finding this!

3 Likes

Is there any intent to go back and publish the missing packages?

I'm told the packages will show up in the browse if you try to resolve it, they just don't show up in the browse until someone does that. The team has made sure that versions 31-33 are available.

Their next priority is making sure the automatic publishing happens, last priority will be getting older packages up.

2 Likes

Unless I'm mistaken, Ignition version 8.1.33 has been released and none of packages 31-33 are available.

Are you going by just browsing or did you try to resolve the packages? If you tried to resolve them, can you post how you did that? That will help us troubleshoot.

Here's what I did, I don't know if it's "resolve packages".
I updated the Client and Designer .json package files and then performed an npm install in the web folder.

0 verbose cli [
0 verbose cli   'C:\\Program Files\\nodejs\\node.exe',
0 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
0 verbose cli   'install'
0 verbose cli ]
1 info using npm@8.5.5
2 info using node@v16.15.0
3 timing npm:load:whichnode Completed in 0ms
4 timing config:load:defaults Completed in 1ms
5 timing config:load:file:C:\Users\Enzo\AppData\Roaming\nvm\v16.15.0\node_modules\npm\npmrc Completed in 1ms
6 timing config:load:builtin Completed in 1ms
7 timing config:load:cli Completed in 1ms
8 timing config:load:env Completed in 1ms
9 timing config:load:file:C:\Users\Enzo\source\ultime\module-aiotools\web\.npmrc Completed in 0ms
10 timing config:load:project Completed in 5ms
11 timing config:load:file:C:\Users\Enzo\.npmrc Completed in 0ms
12 timing config:load:user Completed in 0ms
13 timing config:load:file:C:\Program Files\nodejs\etc\npmrc Completed in 0ms
14 timing config:load:global Completed in 0ms
15 timing config:load:validate Completed in 0ms
16 timing config:load:credentials Completed in 1ms
17 timing config:load:setEnvs Completed in 1ms
18 timing config:load Completed in 11ms
19 timing npm:load:configload Completed in 12ms
20 timing npm:load:setTitle Completed in 0ms
21 timing config:load:flatten Completed in 3ms
22 timing npm:load:display Completed in 4ms
23 verbose logfile C:\Users\Enzo\AppData\Local\npm-cache\_logs\2023-10-23T07_30_07_194Z-debug-0.log
24 timing npm:load:logFile Completed in 5ms
25 timing npm:load:timers Completed in 0ms
26 timing npm:load:configScope Completed in 0ms
27 timing npm:load Completed in 21ms
28 timing arborist:ctor Completed in 0ms
29 silly logfile start cleaning logs, removing 2 files
30 timing arborist:ctor Completed in 0ms
31 timing idealTree:init Completed in 963ms
32 timing idealTree:userRequests Completed in 0ms
33 silly idealTree buildDeps
34 timing idealTree:#root Completed in 0ms
35 silly fetch manifest @inductiveautomation/perspective-client@^2.1.30
36 http fetch GET 200 https://nexus.inductiveautomation.com/repository/node-packages/@inductiveautomation%2fperspective-client 37ms (cache hit)
37 silly placeDep packages/client @inductiveautomation/perspective-client@ OK for: @myCompanyNamespace/example-client@2.0.0 want: ^2.1.30
38 timing idealTree:packages/client Completed in 46ms
39 silly fetch manifest @inductiveautomation/perspective-designer@^2.1.30
40 http fetch GET 200 https://nexus.inductiveautomation.com/repository/node-packages/@inductiveautomation%2fperspective-designer 6ms (cache hit)
41 silly placeDep packages/designer @inductiveautomation/perspective-client@ OK for: @myCompanyNamespace/example-designer@2.0.0 want: ^2.1.30
42 silly placeDep packages/designer @inductiveautomation/perspective-designer@ OK for: @myCompanyNamespace/example-designer@2.0.0 want: ^2.1.30
43 timing idealTree:packages/designer Completed in 10ms
44 timing idealTree:packages/client/node_modules/@inductiveautomation/perspective-client Completed in 0ms
45 timing idealTree:packages/designer/node_modules/@inductiveautomation/perspective-client Completed in 0ms
46 timing idealTree:packages/designer/node_modules/@inductiveautomation/perspective-designer Completed in 0ms
47 timing idealTree:buildDeps Completed in 57ms
48 timing idealTree:fixDepFlags Completed in 5ms
49 timing idealTree Completed in 1029ms
50 timing command:install Completed in 1039ms
51 verbose type range
52 verbose stack @inductiveautomation/perspective-client: No matching version found for @inductiveautomation/perspective-client@^2.1.30.
52 verbose stack     at module.exports (C:\Users\Enzo\AppData\Roaming\nvm\v16.15.0\node_modules\npm\node_modules\npm-pick-manifest\lib\index.js:209:23)
52 verbose stack     at C:\Users\Enzo\AppData\Roaming\nvm\v16.15.0\node_modules\npm\node_modules\pacote\lib\registry.js:126:26
52 verbose stack     at async Arborist.[nodeFromEdge] (C:\Users\Enzo\AppData\Roaming\nvm\v16.15.0\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\build-ideal-tree.js:1081:19)
52 verbose stack     at async Arborist.[buildDepStep] (C:\Users\Enzo\AppData\Roaming\nvm\v16.15.0\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\build-ideal-tree.js:950:11)
52 verbose stack     at async Arborist.buildIdealTree (C:\Users\Enzo\AppData\Roaming\nvm\v16.15.0\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\build-ideal-tree.js:216:7)
52 verbose stack     at async Promise.all (index 1)
52 verbose stack     at async Arborist.reify (C:\Users\Enzo\AppData\Roaming\nvm\v16.15.0\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\reify.js:153:5)
52 verbose stack     at async Install.exec (C:\Users\Enzo\AppData\Roaming\nvm\v16.15.0\node_modules\npm\lib\commands\install.js:159:5)
52 verbose stack     at async module.exports (C:\Users\Enzo\AppData\Roaming\nvm\v16.15.0\node_modules\npm\lib\cli.js:66:5)
53 verbose cwd C:\Users\Enzo\source\ultime\module-aiotools\web
54 verbose Windows_NT 10.0.19045
55 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
56 verbose node v16.15.0
57 verbose npm  v8.5.5
58 error code ETARGET
59 error notarget No matching version found for @inductiveautomation/perspective-client@^2.1.30.
60 error notarget In most cases you or one of your dependencies are requesting
60 error notarget a package version that doesn t exist.
61 verbose exit 1
62 timing npm Completed in 1331ms
63 verbose unfinished npm timer reify 1698046207480
64 verbose unfinished npm timer reify:loadTrees 1698046207488
65 verbose code 1
66 error A complete log of this run can be found in:
66 error     C:\Users\Enzo\AppData\Local\npm-cache\_logs\2023-10-23T07_30_07_194Z-debug-0.log

It seems that even when deleting node module, version 2.1.16 is re-downloaded in all cases.

I believe that this issue has been resolved (after far more time than I'd like to admit). Just to confirm - you're not crazy, was an issue on our end that was non-obvious, but think the repository should be resolving available versions correctly now. I was able to build against the 8.1.33 version (perspective module package versions 2.1.33) successfully on a clean system with no cached dependencies. Please let me know if you're seeing the same result for this version.

We're going to need to do some manual repopulations of older packages. So for those that have a need for historic versions, let us know which versions you're looking for and we'll try to prioritize redeploying them to public availability.

1 Like

It looks much better. Package 2.1.33 is detected, but does not seem to be compatible with Java 11.

Cause 2: org.gradle.internal.resolve.ModuleVersionResolveException: Could not resolve com.inductiveautomation.perspective:perspective-common:2.1.33.
Required by:
    project :common > com.inductiveautomation.ignitionsdk:perspective-common:8.1.33
Caused by: org.gradle.internal.component.NoMatchingConfigurationSelectionException: No matching variant of com.inductiveautomation.perspective:perspective-common:2.1.33 was found. The consumer was configured to find an API of a libr
ary compatible with Java 11, preferably in the form of class files, preferably optimized for standard JVMs, and its dependencies declared externally but:
  - Variant 'apiElements' capability com.inductiveautomation.perspective:perspective-common:2.1.33 declares an API of a library, packaged as a jar, and its dependencies declared externally:
      - Incompatible because this component declares a component compatible with Java 17 and the consumer needed a component compatible with Java 11
      - Other compatible attribute:
          - Doesn't say anything about its target Java environment (preferred optimized for standard JVMs)
  - Variant 'javadocElements' capability com.inductiveautomation.perspective:perspective-common:2.1.33 declares a runtime of a component, and its dependencies declared externally:
      - Incompatible because this component declares documentation and the consumer needed a library
      - Other compatible attributes:
          - Doesn't say anything about its target Java environment (preferred optimized for standard JVMs)
          - Doesn't say anything about its target Java version (required compatibility with Java 11)
          - Doesn't say anything about its elements (required them preferably in the form of class files)
  - Variant 'runtimeElements' capability com.inductiveautomation.perspective:perspective-common:2.1.33 declares a runtime of a library, packaged as a jar, and its dependencies declared externally:
      - Incompatible because this component declares a component compatible with Java 17 and the consumer needed a component compatible with Java 11
      - Other compatible attribute:
          - Doesn't say anything about its target Java environment (preferred optimized for standard JVMs)

So I updated Java, but this time I came across an unexpected dependency with the @inductiveautomation/perspective-drawing-common package.

yarn install v1.22.18
[1/4] Resolving packages...
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.                                                                                        
error Couldn't find package "@inductiveautomation/perspective-drawing-common@workspace:*" required by "@inductiveautomation/perspective-designer@^2.1.33" on the "npm" registry.
Error: Couldn't find any versions for "@inductiveautomation/perspective-client" that matches "workspace:*"                                                                      
    at MessageError.ExtendableBuiltin (C:\Users\Enzo\source\ultime\module-aiotools\web\.gradle\yarn\yarn-v1.22.18\node_modules\yarn\lib\cli.js:721:66)                          
    at new MessageError (C:\Users\Enzo\source\ultime\module-aiotools\web\.gradle\yarn\yarn-v1.22.18\node_modules\yarn\lib\cli.js:750:123)                                       
    at Function.<anonymous> (C:\Users\Enzo\source\ultime\module-aiotools\web\.gradle\yarn\yarn-v1.22.18\node_modules\yarn\lib\cli.js:50343:13)
    at Generator.next (<anonymous>)
    at step (C:\Users\Enzo\source\ultime\module-aiotools\web\.gradle\yarn\yarn-v1.22.18\node_modules\yarn\lib\cli.js:310:30)
    at C:\Users\Enzo\source\ultime\module-aiotools\web\.gradle\yarn\yarn-v1.22.18\node_modules\yarn\lib\cli.js:321:13
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

Glad to hear we're making progress. Ignition platform has moved to Java 17, so that's consistent with what's expected.

I'm not sure about the drawing component dependency, but will reach out to the perspective team and see if we can come up with a resolution.

2 Likes

Just as a quick followup - I confirmed with the perspective team that the drawing-components-common should be published as part of the public api, in support of designer-scope functionality.

We'll get that deployed and update this thread. Thanks for your ongoing patience. This thread has helped us identify some improvements we can make in the release process to make sure we're catching this sort of issue much earlier (ideally before any of you do!).

Will try to get this package deployed today by EoD PST.

1 Like

Ok, @inductiveautomation/perspective-drawing-common 2.1.33 has been published to nexus. Let me know if there are any remaining issues. We've got a number of tickets opened to improve a number of elements relating to how we publish and validate SDK dependencies. Can't promise perfection, but we'll definitely get to work on improvements.

Thanks again to everyone for patience and ongoing reporting!

3 Likes

It's perfect, everything works for me!
Thanks to all your teams!

I tried to look for some previews in the perspective-drawing-common package, but I didn't find anything intriguing.
Looking forward to discovering more! :eyes:

Need some updates to dependencies required for this package. 2.1.37 requires react 18 but it has dependencies that are 3 years old that require older versions of react and react-dom. For example

One dependency is react-resize-detector@6.7.2 which requires react 16 or 17
image

Theres a bunch of these

Hi,

We appreciate your concern. Usually, a message stating incorrect React peer dependency version isn't too much of a concern, since React is great at maintaining backwards compatibility. Unfortunately, some dependencies, react-resize-detector in particular, cannot be upgraded due to dropped browser support. This would mean that Perspective would also have to drop browser support in 8.1. Instead, we are reserving these kind of upgrades for the next major release, which should be happening very soon.

1 Like