【问题标题】:Importing "regular" javascript packages installed with npm in Webpack在 Webpack 中导入使用 npm 安装的“常规”javascript 包
【发布时间】:2017-02-10 08:02:17
【问题描述】:

我已经 npm 安装了 smooth-scroll,这是一个不支持 import 语法的包。

如果我手动将源代码复制到 libs 库并使用 script 标签,我相信它会起作用:

<script src="/libs/smooth-scroll.js"></script>

但是我该如何使用 import 语法。我尝试了两种选择,但都没有奏效。

选项 A:

import scroller from 'smooth-scroll';

选项 B:

import {scroller} from 'smooth-scroll';

这是一种猜测,显然不会起作用,但是如何使用 import 并让 Webpack 为其提供服务?

更新:

我注意到包的源代码以以下行开头:

(function (root, factory) {
    if ( typeof define === 'function' && define.amd ) {
        define([], factory(root));
    } else if ( typeof exports === 'object' ) {
        module.exports = factory(root);
    } else {
        root.smoothScroll = factory(root);
    }
})(typeof global !== 'undefined' ? global : this.window || this.global, (function (root) {
...

这是否意味着该包已经支持 ES2015 导入?

【问题讨论】:

    标签: javascript ecmascript-6 webpack require


    【解决方案1】:

    最简单的答案是进入smooth-scroll.js的源代码并添加到底部:

    export default smoothScrollFunction;
    

    smoothScrollFunction 是函数/对象/您要导入的任何内容。然后 import 语句将在其他代码中使用:

    import scroller from "./lib/smooth-scroller";
    

    这就是 ES2015 的导入和导出工作方式。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export

    【讨论】:

    • 很高兴知道这一点。但是,这意味着当我在新计算机上设置项目时,“npm install”将不起作用。虽然投票!谢谢
    • 您可以制作一个安装脚本,将导出行放在文件末尾,并将其放入 package.json 中的scripts,这样您就可以使用npm run whatever(无论您给出的名称是什么scripts) 中的脚本,或者向平滑滚动的维护者发送拉取请求以添加对 ES2015 导入/导出支持的支持。
    猜你喜欢
    • 2019-12-21
    • 1970-01-01
    • 2019-10-02
    • 2018-02-19
    • 1970-01-01
    • 2018-03-21
    • 2016-03-24
    • 2021-08-02
    • 2022-01-21
    相关资源
    最近更新 更多