SyntaxError: Cannot use import statement outside a module
-
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. -
@aqua-calc Make sure the repo is clean and there are no untracked files (
git status). -
Be sure to remove your node_modules and rebuild after you updated to the latest Node LTS version.
-
@olivierlambert Remove how?
-
rm -rf node_modules? -
@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. -
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. -
@aqua-calc Make sure the repo is clean and there are no untracked files (
git status). -
@julien-f I did fresh install, with config exported from the original xenorchestra server and then imported into the new server
-
@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-onlyyarn 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.
(Usenode --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
- delete /packages/xo-server/dist/xapi/mixins/index.js (rm index.js)
- delete /packages/xo-server/dist/xapi/mixins/index.js.map (rm index.js.map)
- 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.jsAnd 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.
-
@jmrapin You still hav untracked
index.jsfiles inxo-server/src, please remove them and rebuild. -
@julien-f well spotted. Thanks!
All good now. -
@jmrapin Thank you!
-
@jmrapin good job! after removing the untracked files, problem wasn't solved, and then i followed your instructions and it worked, thanks a lot!
-
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", // ... }
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