XCP-ng
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    SyntaxError: Cannot use import statement outside a module

    Scheduled Pinned Locked Moved Solved Xen Orchestra
    14 Posts 6 Posters 5.2k Views 2 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • aqua-calcA Offline
      aqua-calc
      last edited by

      I'm updating xo-orchestra following this page:
      [https://xen-orchestra.com/docs/from_the_sources.html](link url)

      and getting the following messages:

      root@xenorchestra:/opt/xen-orchestra# node -v
      v14.17.0
      root@xenorchestra:/opt/xen-orchestra# npm -v
      6.14.13
      root@xenorchestra:/opt/xen-orchestra#  yarn -v
      1.22.5
      root@xenorchestra:/opt/xen-orchestra# cd packages/xo-server
      root@xenorchestra:/opt/xen-orchestra/packages/xo-server# yarn start
      yarn run v1.22.5
      $ node dist/cli.mjs
      (node:1189) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
      (Use `node --trace-warnings ...` to show where the warning was created)
      /opt/xen-orchestra/packages/xo-server/dist/xapi/mixins/index.js:2
      import _gpu, * as __gpu from "./gpu";
      ^^^^^^
      
      SyntaxError: Cannot use import statement outside a module
          at wrapSafe (internal/modules/cjs/loader.js:984:16)
          at Module._compile (internal/modules/cjs/loader.js:1032:27)
          at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
          at Module.load (internal/modules/cjs/loader.js:933:32)
          at Function.Module._load (internal/modules/cjs/loader.js:774:14)
          at ModuleWrap.<anonymous> (internal/modules/esm/translators.js:199:29)
          at ModuleJob.run (internal/modules/esm/module_job.js:152:23)
          at async Loader.import (internal/modules/esm/loader.js:177:24)
          at async Object.loadESM (internal/process/esm_loader.js:68:5)
      error Command failed with exit code 1.
      info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
      
      1 Reply Last reply Reply Quote 0
      • julien-fJ Offline
        julien-f Vates πŸͺ Co-Founder XO Team @aqua-calc
        last edited by

        @aqua-calc Make sure the repo is clean and there are no untracked files (git status).

        aqua-calcA 1 Reply Last reply Reply Quote 1
        • olivierlambertO Online
          olivierlambert Vates πŸͺ Co-Founder CEO
          last edited by olivierlambert

          Be sure to remove your node_modules and rebuild after you updated to the latest Node LTS version.

          aqua-calcA 1 Reply Last reply Reply Quote 0
          • aqua-calcA Offline
            aqua-calc @olivierlambert
            last edited by

            @olivierlambert Remove how?

            1 Reply Last reply Reply Quote 0
            • olivierlambertO Online
              olivierlambert Vates πŸͺ Co-Founder CEO
              last edited by

              rm -rf node_modules?

              aqua-calcA 1 Reply Last reply Reply Quote 0
              • aqua-calcA Offline
                aqua-calc @olivierlambert
                last edited by aqua-calc

                @olivierlambert Still getting the same error:

                root@xenorchestra:/opt/xen-orchestra/packages/xo-server# yarn start
                yarn run v1.22.5
                $ node dist/cli.mjs
                (node:3490) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
                (Use `node --trace-warnings ...` to show where the warning was created)
                /opt/xen-orchestra/packages/xo-server/dist/xapi/mixins/index.js:2
                import _gpu, * as __gpu from "./gpu";
                ^^^^^^
                
                SyntaxError: Cannot use import statement outside a module
                    at wrapSafe (internal/modules/cjs/loader.js:984:16)
                    at Module._compile (internal/modules/cjs/loader.js:1032:27)
                    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
                    at Module.load (internal/modules/cjs/loader.js:933:32)
                    at Function.Module._load (internal/modules/cjs/loader.js:774:14)
                    at ModuleWrap.<anonymous> (internal/modules/esm/translators.js:199:29)
                    at ModuleJob.run (internal/modules/esm/module_job.js:152:23)
                    at async Loader.import (internal/modules/esm/loader.js:177:24)
                    at async Object.loadESM (internal/process/esm_loader.js:68:5)
                error Command failed with exit code 1.
                info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
                
                julien-fJ 1 Reply Last reply Reply Quote 0
                • olivierlambertO Online
                  olivierlambert Vates πŸͺ Co-Founder CEO
                  last edited by olivierlambert

                  Then I don't know. @julien-f might be around tomorrow to check if it rings any bell.

                  edit: as usual, double check you are on latest commit from master.

                  1 Reply Last reply Reply Quote 0
                  • julien-fJ Offline
                    julien-f Vates πŸͺ Co-Founder XO Team @aqua-calc
                    last edited by

                    @aqua-calc Make sure the repo is clean and there are no untracked files (git status).

                    aqua-calcA 1 Reply Last reply Reply Quote 1
                    • aqua-calcA Offline
                      aqua-calc @julien-f
                      last edited by

                      @julien-f I did fresh install, with config exported from the original xenorchestra server and then imported into the new server

                      J 1 Reply Last reply Reply Quote 0
                      • J Offline
                        jmrapin @aqua-calc
                        last edited by jmrapin

                        @aqua-calc, I have the same issue....
                        building at commit level a204b6fb3f1236dc5f4519a734c4d5c8f99f9e9c
                        and I am getting the same error. Cleaned all a did a fresh git pull --ff-only

                        yarn run v1.22.5
                        $ node dist/cli.mjs
                        (node:3448) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
                        (Use node --trace-warnings ... to show where the warning was created)
                        /root/xen-orchestra/packages/xo-server/dist/xapi/mixins/index.js:2
                        import _gpu, * as __gpu from "./gpu";
                        ^^^^^^

                        SyntaxError: Cannot use import statement outside a module
                        etc...

                        The yarn build command produces those files (there is something wrong somewhere, why does the build produces index.js when there is the index.mjs?)

                        So

                        1. delete /packages/xo-server/dist/xapi/mixins/index.js (rm index.js)
                        2. delete /packages/xo-server/dist/xapi/mixins/index.js.map (rm index.js.map)
                        3. remove the import and export statements referencing index.js from file /packages/xo-server/dist/xapi/mixins/index.mjs (nano index.mjs)

                        and did the same as above for /packages/xo-server/dist/api/index.js
                        and same for /packages/xo-server/dist/xo-mixins/index.js

                        And then yarn start and it starts and orchestra is fine as far as I can see.

                        Not sure if that's the best but it got me going . Hope this helps someone.

                        julien-fJ aqua-calcA I 3 Replies Last reply Reply Quote 0
                        • julien-fJ Offline
                          julien-f Vates πŸͺ Co-Founder XO Team @jmrapin
                          last edited by

                          @jmrapin You still hav untracked index.js files in xo-server/src, please remove them and rebuild.

                          J 1 Reply Last reply Reply Quote 0
                          • J Offline
                            jmrapin @julien-f
                            last edited by

                            @julien-f well spotted. Thanks!
                            All good now.

                            1 Reply Last reply Reply Quote 0
                            • aqua-calcA Offline
                              aqua-calc @jmrapin
                              last edited by

                              @jmrapin Thank you!

                              1 Reply Last reply Reply Quote 0
                              • I Offline
                                iron_man @jmrapin
                                last edited by

                                @jmrapin good job! after removing the untracked files, problem wasn't solved, and then i followed your instructions and it worked, thanks a lot!

                                1 Reply Last reply Reply Quote 0
                                • ronaldgevernR Offline
                                  ronaldgevern
                                  last edited by

                                  This error can happen in different cases depending on whether you're working with JavaScript on the server-side with Node.js , or client-side in the browser. There are several reasons behind "Cannot use import statement outside a module" error, and the solution depends on how you call the module or script tag.

                                  Add type="module" inside the script tag

                                  When working with ECMAScript modules and JavaScript module import statements in the browser, you'll need to explicitly tell the browser that a script is module. To do this, you have to add type="module" onto any β€Ήscriptβ€Ί tags that point to a JavaScript module. Once you do this you can import that module without issues.

                                  <script type="module" src="./index.js"></script>
                                  

                                  If you are working on Node.js or react applications and using import statements instead of require to load the modules, then ensure your package.json has a property "type": "module" as shown below.

                                  {
                                    // ...
                                    "type": "module",
                                    // ...
                                  }
                                  
                                  1 Reply Last reply Reply Quote 0

                                  Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                  Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                  With your input, this post could be even better πŸ’—

                                  Register Login
                                  • First post
                                    Last post