我怎么能通过脚本标签执行/_next/static/xxx.js

How could I execute /_next/static/xxx.js by script tag

我已经自定义 next.config (webpack) 来构建静态 js 文件 (.next/static/loader.js)。

原来loader.js是一个IIFE:

(function stickerLoader(){
  alert('Hello');
  // ... some source code
}())

它的用法是这样的:

<script type="text/javascript" src="/_next/static/loader.js"></script>

但是,上面的代码不会立即执行,因为它被编译为:

(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["static/loader.js"],{

/***/ "./components/Sticker/loader.js":
/*!**************************************!*\
  !*** ./components/Sticker/loader.js ***!
  \**************************************/
/*! no static exports found */
/***/ (function(module, exports) {

(function stickerLoader() {
  alert('Hello');
  // ... some minified source code
})();

/***/ })

},[["./components/Sticker/loader.js","static/runtime/webpack.js"]]]);

Next.js是否有任何设置可以删除WEBPACK WRAPPER,只留下我的源代码,所以我的预期结果是:

(function stickerLoader() {
  alert('Hello');
  // ... some minified source code
})();

我的next.config.js:

module.exports = {
  webpack(config, options) {
    return merge(config, {
      entry() {
        return config.entry().then(entry => {
          return Object.assign({}, entry, {
            'static/loader.js': path.resolve(
              __dirname,
              'components',
              'Sticker',
              'loader.js'
            )
          });
        });
      }
    });
 };
};

如果你想要它没有任何 webpack 的东西,为什么要将它添加到 webpack 构建中?

如果这是一个简单的 js 文件,请将其作为常规静态 js 文件放在 public/(或 static/ v9.0.5 及以下版本)文件夹中。