admin管理员组文章数量:1315069
What I'm trying to do
I'm trying to use the library videojs-abloop
My nodejs version is v12.18.3
What is the problem
First I installed two libraries as asked from videojs-abloop :
npm install video.js videojs-abloop
Then ran the mand
$ node --experimental-modules index.js
Error output
$ node --experimental-modules index.js
(node:31057) ExperimentalWarning: The ESM module loader is experimental.
/my_path/testimport/node_modules/videojs-abloop/videojs-abloop.js:8
export default function (window, videojs) {
^^^^^^
SyntaxError: Unexpected token 'export'
What is my project structure
I two files : index.js
and package.json
:
index.js
import videojs from 'video.js'
import abLoopPlugin from 'videojs-abloop'
abLoopPlugin(window,videojs);
package.json
{ "type": "module" }
What I have checked
I checked about the ESM imports but Node.js 12 : ESM Imports, but I think it is not related to this problem
What I'm trying to do
I'm trying to use the library videojs-abloop
My nodejs version is v12.18.3
What is the problem
First I installed two libraries as asked from videojs-abloop :
npm install video.js videojs-abloop
Then ran the mand
$ node --experimental-modules index.js
Error output
$ node --experimental-modules index.js
(node:31057) ExperimentalWarning: The ESM module loader is experimental.
/my_path/testimport/node_modules/videojs-abloop/videojs-abloop.js:8
export default function (window, videojs) {
^^^^^^
SyntaxError: Unexpected token 'export'
What is my project structure
I two files : index.js
and package.json
:
index.js
import videojs from 'video.js'
import abLoopPlugin from 'videojs-abloop'
abLoopPlugin(window,videojs);
package.json
{ "type": "module" }
What I have checked
I checked about the ESM imports but Node.js 12 : ESM Imports, but I think it is not related to this problem
Share Improve this question asked Jul 27, 2020 at 5:20 yuntresyuntres 471 gold badge1 silver badge7 bronze badges 7-
Try renaming your file to
index.mjs
– Phil Commented Jul 27, 2020 at 5:22 - @Phil, it does not work – yuntres Commented Jul 27, 2020 at 5:48
- Checkout this one stackoverflow./questions/45854169/… . If you really want to use es6 import/export and all features of es6 and next, try using typescript OR follow this one freecodecamp/news/… – Saroj Commented Jul 27, 2020 at 5:52
- @Phil: That obviously won't change anything, since the error is in a third-party NPM package, not the OP's code, so there is nothing the code can change in their code that would have any influence whatsoever. – Jörg W Mittag Commented Jul 27, 2020 at 5:55
- @Saroj: The error is in a third-party NPM package, not in the OP's code. The OP can read tutorials all they want, nothing they can change in their own code will fix the problem. – Jörg W Mittag Commented Jul 27, 2020 at 5:56
2 Answers
Reset to default 4It is impossible to tell just from looking at a file whether it is an ECMAScript Script or an ECMAScript Module. Therefore, you need to tell the engine which of the two it is.
On the web, this is solved via different MIME Types, but MIME Types don't exist on filesystems, so Node.js uses the file extension (.mjs
) or the type
field in package.json
("type": "module"
) to distinguish between the two.
As the documentation says [Note: I am quoting from the latest docs, but the only difference is whether ESM are enabled by default or not]:
Enabling
Experimental support for ECMAScript modules is enabled by default. Node.js will treat the following as ES modules when passed to node as the initial input, or when referenced by
import
statements within ES module code:
- Files ending in
.mjs
.- Files ending in
.js
when the nearest parentpackage.json
file contains a top-level field"type"
with a value of"module"
.- Strings passed in as an argument to
--eval
, or piped to node viaSTDIN
, with the flag--input-type=module
.
There are several pages more about how exactly Node.js determines whether a file is an ECMAScript Script or an ECMAScript Module.
You seem to have an outdated or somehow broken version of videojs-abloop
. According to the GitHub Issues, and particularly this mit, videojs-abloop
is written as an ECMAScript Module but is transpiled to an ECMAScript Script. In your case, for some reason, you have an ECMAScript Module instead of an ECMAScript Script of videojs-abloop
.
I've published an update to videojs-abloop (version 1.2.0) which reverts to exporting the plugin using Common JS. This seems to work, either using require
to import the modules, or with "type":"module"
or --experimental-modules
set and import
used.
I recreated your issue using your code, then applied the update and the issue went away.
Please update to v1.2.0 and let me know if it works (issues via https://github./phhu/videojs-abloop/issues)
Thanks for posting the problem, and sorry for the oversight!
To make the change manually, just change the first line non-ment line of node_modules/videojs-ablooop/videojs-abloop.js to
module.exports = function (window, videojs) {
本文标签: javascriptNodeJS 12 SyntaxError Unexpected token 39export39Stack Overflow
版权声明:本文标题:javascript - NodeJS 12 SyntaxError: Unexpected token 'export' - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741972624a2407930.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论