SyntaxError: import declarations may only appear at top level of a module
JavaScript ä¾å¤ "import declarations may only appear at top level of a module" ã¯ãimport 宣è¨ãã¢ã¸ã¥ã¼ã«ã®æä¸ä½ã¬ãã«ã«ãªãå ´åã«çºçãã¾ããããã¯ãimport 宣è¨ãä»ã®æ§æï¼é¢æ°ããããã¯ãªã©ï¼ãå«ãããå¤ãã®å ´åã§è¨ãã°ãç¾å¨ã®ãã¡ã¤ã«ãã¢ã¸ã¥ã¼ã«ã¨ãã¦æ±ããã¦ããªããã¨ãåå ã§ããå¯è½æ§ãããã¾ãã
ã¨ã©ã¼ã¡ãã»ã¼ã¸
SyntaxError: Cannot use import statement outside a module (V8-based) SyntaxError: import declarations may only appear at top level of a module (Firefox) SyntaxError: Unexpected identifier 'x'. import call expects one or two arguments. (Safari)
ã¨ã©ã¼ã®ç¨®é¡
SyntaxError
ã¨ã©ã¼ã®åå
颿°ããããã¯ãªã©ãimport 宣è¨ãå¥ã®æ§é ã®ä¸ã«å«ã¾ãã¦ããå ´åãèãããã¾ããimport 宣è¨ã¯ãã¢ã¸ã¥ã¼ã«ã®æä¸ä½ã«è¨è¿°ããå¿
è¦ãããã¾ããã¢ã¸ã¥ã¼ã«ãæ¡ä»¶ä»ãã§ã¤ã³ãã¼ãããããå¿
è¦ã«å¿ãã¦é
å»¶ã¤ã³ãã¼ãããããããå ´åã¯ã代ããã« åçã¤ã³ãã¼ã ã使ç¨ãã¦ãã ããã
ãã import ããã§ã«ã³ã¼ãã®æä¸ä½ã«ããå ´åã¯ããã®ãã¡ã¤ã«ãã¢ã¸ã¥ã¼ã«ã¨ãã¦è§£éããã¦ããªãå¯è½æ§ãããã¾ããã©ã³ã¿ã¤ã ã¯ããã¡ã¤ã«ãã¢ã¸ã¥ã¼ã«ã§ãããã©ããã夿ããããã«å¤é¨ããã®ãã³ããè¦æ±ãã¾ãããã®ãããªãã³ããæä¾ããæ¹æ³ã¯ããã¤ãããã¾ãã
- ãã¡ã¤ã«ã HTML ããç´æ¥èªã¿è¾¼ãå ´åã¯ã
<script>ã¿ã°ã«type="module"屿§ãè¨å®ããã¦ãããã¨ã確èªãã¦ãã ããã - ãã¼ãã§ãã¡ã¤ã«ãå®è¡ããå ´åã¯ããã¡ã¤ã«ã®æ¡å¼µåã
.mjsã§ãããããããã¯æãè¿ãpackage.jsonãã¡ã¤ã«ã«"type": "module"ãã£ã¼ã«ããå«ã¾ãã¦ãããã¨ã確èªãã¦ãã ããã - ãã¡ã¤ã«ã ã¯ã¼ã«ã¼ã¨ãã¦å®è¡ããå ´åã¯ã
Worker()ã³ã³ã¹ãã©ã¯ã¿ã¼ãtype: "module"ãªãã·ã§ã³ãã¤ãã¦å¼ã³åºãããã«ãã¦ãã ããã - ãã®ãã¡ã¤ã«ãå¥ã®ã¢ã¸ã¥ã¼ã«ããã¤ã³ãã¼ããã¦ãã ããã
ãã以å¤ã«ããåå ã¨ãã¦èããããã®ã¯ãã³ã³ãã¤ã©ã¼ï¼TypeScript ãªã©ï¼ãã¤ã㦠import ãè¨è¿°ãã¦ããéã«ã誤ã£ã¦ã½ã¼ã¹ãã¡ã¤ã«ãå®è¡ãã¦ãã¾ã£ãå ´åã§ããimport 宣è¨ã¯é常ãããã°ã©ã ã®å
é ã«ç¾ããããããã¼ãµã¼ãã¾ããããæ¤ç¥ããã¨ã©ã¼ãå ±åãã¦ãã¾ãã®ã§ããå¿
ãã½ã¼ã¹ãã¡ã¤ã«ãã³ã³ãã¤ã«ããã³ã³ãã¤ã«ããããã¡ã¤ã«ãå®è¡ããããã«ãã¦ãã ããã
ä¾
>æ¡ä»¶ä»ãã¤ã³ãã¼ã
Python ã¨åæ§ã«ãä»ã®æ§æã®å
é¨ã§ import ã使ç¨ãããã¨ã¯ã§ãã¾ããã
if (writeOutput) {
import fs from "fs"; // SyntaxError
}
import ãæä¸ä½ã«ç§»åããããåçã¤ã³ãã¼ãã使ç¨ããããã¦ãã ããã
if (writeOutput) {
import("fs").then((fs) => {
// use fs
});
}
ã¢ã¸ã¥ã¼ã«ã§ã¯ãªãã¹ã¯ãªããã§ã®ã¤ã³ãã¼ã
HTML ããã¹ã¯ãªãããèªã¿è¾¼ãå ´åã¯ãå¿
ã <script> ã¿ã°ã« type="module" 屿§ã追å ãã¦ãã ããã
<script type="module" src="main.js"></script>
ä½ããã®çç±ã§ã¹ã¯ãªãããã¢ã¸ã¥ã¼ã«ã«ç§»è¡ã§ããªãå ´åã¯ãåçã¤ã³ãã¼ãã使ç¨ãããã¨ãã§ãã¾ãã
async function main() {
const myModule = await import("./my-module.js");
// use myModule
}
main();