SyntaxError: Cannot use import statement outside a module
-
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.js
files 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", // ... }