【问题标题】:Importing Node Modules With JavaScript使用 JavaScript 导入节点模块
【发布时间】:2018-08-07 20:22:09
【问题描述】:

对于这个简单的问题,我深表歉意,但我对 Web 开发和 JavaScript 还是很陌生。

我想导入我使用 npm 安装的包,特别是按照此处的指南进行 shopify-buy:https://shopify.github.io/js-buy-sdk/

该包位于我的 node_modules 文件夹中,我正在尝试使用 import Client from 'shopify-buy'; 将其导入到 JavaScript 文档中

当我尝试在 Chrome 中加载所有内容时,导入行出现错误

Uncaught SyntaxError: Unexpected identifier

Firefox 错误有点不同:import declarations may only appear at top level

我做错了什么?

编辑:

导入行是我的 JavaScript 文件中的第一行。而且我的 HTML 文件已正确链接到 JS 文件(我认为)。

shopify.js

// Functions for SHOPIFY
import Client from 'shopify-buy';

const client = Client.buildClient({
    domain: 'xxxxx.myshopify.com',
    storefrontAccessToken: 'xxxxx'
});

index.html

<script src="javascript/shopify.js"></script>

【问题讨论】:

  • firefox 错误听起来像是您在块语句中使用 import。不看代码无法确定
  • 导入必须是模块中的第一件事。
  • 要使用新的ecmascript modules 语法需要命令行参数,我相信文件名必须是.mjs 扩展名?请参阅documentation - 哦,对不起,nodejs 标签让我感到困惑 - 这是浏览器的问题
  • 导入行是我的 JavaScript 文件中的第一行。为了清楚起见,我在原始帖子中添加了更多信息。

标签: javascript node.js npm shopify


【解决方案1】:

JavaScript 模块只能在模块模式脚本中运行。将您的 HTML 更改为以下内容:

<script type="module" src="javascript/shopify.js"></script>

【讨论】:

    【解决方案2】:

    如果您想通过语法使用 npm 模块,例如用于浏览器的 import sth from "something",您需要设置模块捆绑器和 ES6 编译器,例如 Webpack 和 Babel。你需要用谷歌搜索它们并找到相应的设置教程。

    使用 SDK 的一种简单方法似乎是使用 CDN,因为它已经为浏览器所理解而构建。比如:

    index.html

    <script src="http://sdks.shopifycdn.com/js-buy-sdk/v1/latest/index.umd.min.js"></script>
    <script src="javascript/shopify.js"></script>
    

    shopify.js

    const client = ShopifyBuy.buildClient({
        domain: 'your-shop-name.myshopify.com',
        storefrontAccessToken: 'your-storefront-access-token'
    });
    
    console.log(client); 
    

    【讨论】:

    • 谢谢!我试过这个,但我没有意识到我必须将 Client.buildClient() 更改为 ShopifyBuy.buildClient()。不过,我确实想了解更多有关正确使用 Import 的信息。我开始查看有关 Babel 和 Browserify 的文档。
    猜你喜欢
    • 2013-08-25
    • 2018-01-27
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    相关资源
    最近更新 更多