javascript - "Uncaught SyntaxError: import declarations may only appear at top level of a module":1:18 asking again

标签 javascript npm webpack axios

完整代码在这里:https://github.com/vscodr/axios_issue

离开 JS 一两分钟,在 python 中工作,现在我想尝试用 JS 完成一些我在 python 中一直在做的相同任务。我不能越过最愚蠢的事情! 将 Axios 作为依赖项安装后,

  "dependencies": {
    "axios": "^0.19.2"
  }

尝试使用脚本第一行的 axios:

import axios from 'axios' 
r = axios.get('https://swapi.dev')
console.log(r)

我不断得到:

Uncaught SyntaxError: import declarations may only appear at top level of a module

在阅读了关于此错误的所有 SO 帖子并确保我将脚本本身称为

之后
<script type="module" src="/main.js"></script>
<script type="module" src="main.js"></script>
<script type="module" src="./main.js"></script>

产生:

Uncaught TypeError: Error resolving module specifier: axios main.js:1:18

作为:

<script src="./main.js"></script>
<script src="/main.js"></script>
<script src="main.js"></script>

产生:

 Uncaught SyntaxError: import declarations may only appear at top level of a module :1:18

我提到了:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script

因此,在重新发布这篇文章之前,我已经涵盖了大部分内容。

同样只是使用文档中的代码导致了同样的错误。

   axios.get('https://swapi.dev')
.then(function (response) {

// handle success
   console.log(response);
})
.catch(function (error) {

// handle error
  console.log(error);
})
  .finally(function () {

// always executed
  });

我公开羞辱自己以解决这个愚蠢的问题!这显然是来自浏览器的某种“跑回家找妈妈”错误,我怀疑 WEBPACK

我不知道有任何我可能没有听说过的改变游戏规则的变化。

我很生疏,我知道问题是 super 基本的(我希望它是 super 基本的),我只想要一个错误。我得到的是没有告诉我到底发生了什么。

在新机器上全新安装 Windows 和 VSCode

最佳答案

有几个概念需要澄清,看起来像。

importexport 是 ES 模块 (ESM) 语法。在浏览器中,如果您的脚本是 type="module",您只能使用该语法,正如您所注意到的。抛开这个障碍,我们进入下一点。

当你npm install --save axios(或yarn add axios)时,你会得到一个包含package.json {"dependencies": ...},以及安装 axios 及其依赖项的 node_modules 目录。浏览器没有 package.jsonnode_modules 的概念,因此您的浏览器不知道在哪里可以找到您喜欢称为 axios 的东西。您可以在浏览器中使用像 Systemjs 这样的加载程序来指示它。

此外,并非所有浏览器都支持 ESM。这就是 Webpack、Rollup、Snowpack 等打包工具的用武之地——除了将 ESM 导入解析为 node_modules(或偶尔在其他地方)中的真实文件外,它们还允许您将 ESM 代码转换为常规 ES,以及将其捆绑到一个文件中以提高性能,或者将其缩小以获得更多。 (就 Webpack 而言,它基本上可以为你烤咖啡、做面包,还可以为你打造一个厨房水槽。)

因此 – 除非您喜欢冒险,否则请使用 bundler 。

我建议查看 Vite .

关于javascript - "Uncaught SyntaxError: import declarations may only appear at top level of a module":1:18 asking again,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62278484/

相关文章:

javascript - 使用动态日期格式验证日期字符串的最佳方法

javascript - Google Analytics API 返回没有正文的 204 响应

node.js - 将参数/通配符定义为 npm 脚本键/名称的一部分

c# - 在多目标 Visual Studio .csproj 构建之前更新资源

javascript - 使用服务器端渲染设置 webpack 以在 asp.net 核心项目中加载 Sass 文件

javascript - 在 Angular 2 中使用 HTML5 主题

javascript - 如果单击第一个 div,则切换 div 的类

node.js - 使用 webpack 导入 monaco-editor 时找不到依赖项

javascript - 运行示例 Reapp 项目时出错

javascript - Webpack 构建时不包含对等依赖项