首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firebase主机抛出错误:未捕获SyntaxError:意外的标识符

Firebase主机抛出错误:未捕获SyntaxError:意外的标识符
EN

Stack Overflow用户
提问于 2018-05-15 19:36:32
回答 1查看 1.4K关注 0票数 0

我正在尝试使用firebase-hosting托管一个网站,但收到错误:Uncaught SyntaxError: Unexpected identifier

它发生在script.js:1中。源代码如下所示:

代码语言:javascript
复制
import axios from 'axios';

callWs();
console.log('This worked now!');

async function callWs() {
    try {
        const res = await axios(
            `https://us-central1-jpabiggmbh-001.cloudfunctions.net/realexData?amt=${500}&curr=${'CHF'}`
        );
        console.log('This function ran just now!');
    } catch (e) {
        console.log(e);
    }
    console.log(res);
}

我的文件夹结构如下所示(关注公共树):

我正在调用index.html中的脚本

代码语言:javascript
复制
<head>
  <title>Fantastic title</title>
  <script src="script.js"></script>
</head>

我的firebase-functions导入工作正常,但我有一个package.json文件,我想这是我遇到麻烦的原因之一?

我的firebase.json文件如下所示:

代码语言:javascript
复制
{
  "database": {
    "rules": "database.rules.json"
  },
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint"
    ],
    "source": "functions"
  },
  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}
EN

回答 1

Stack Overflow用户

发布于 2018-05-16 05:45:13

错误来自包含以下代码的1行:

代码语言:javascript
复制
import axios from 'axios';

这是一条ES Module import语句。浏览器中的本机模块支持仍然是非常新的。火狐刚刚开始发布这款May 9, 2018。你需要确保你使用的浏览器是supports modules的。

当你加载一个模块脚本时,你需要tell the browser

代码语言:javascript
复制
<script type="module" src="script.js"></script>

另一个问题是from value 'axios'。浏览器不知道npm包和包名,所以你必须指定一个位置。

代码语言:javascript
复制
import * as axios from '/node_modules/axios/dist/axios.min.js';

代码语言:javascript
复制
import * as axios from 'https://unpkg.com/axios@0.18.0/dist/axios.min.js';

来自packageNameimport是一种简写工具,用于引用本地安装的依赖项。

因为您在脚本中运行import,所以它被认为是一个dynamic import。动态导入目前只在Chrome中提供,并且具有不同的语法。

代码语言:javascript
复制
import('https://unpkg.com/axios@0.18.0/dist/axios.min.js')
  .then(axios => {
    axios.get(...);
  });

最终,您正在尝试使用一种尚未完全准备好使用的技术。我建议考虑添加一个像WebpackGulp这样的构建步骤。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50349224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档