开发者问题收集

统计信息未通过 node_modules 错误导出 - Rollup

2020-07-06
997

我正在尝试将 stats.js (一个小型 fps 计数器) 添加到我的 three.js 场景中。该项目使用汇总来捆绑所有内容,并且在尝试导入 Stats 后,我不断收到此错误:

import { Stats } from 'stats.js'

错误显示:

[!] Error: 'Stats' is
not exported by node_modules\stats.js\build\stats.min.js, imported by src\main.js

我的汇总配置如下所示:

import resolve from '@rollup/plugin-node-resolve'; // locate and bundle dependencies in node_modules (mandatory)
import { terser } from "rollup-plugin-terser"; // code minification (optional)

export default {
    input: 'src/main.js',
    output: [
        {
            format: 'umd',
            name: 'LIB',
            file: 'build/main.js'
        }
    ],
    plugins: [ resolve(), terser() ]
};

Stats 在 stats.js 中导出如下:

export { Stats as default };

我不断浏览 github 上的错误报告,但不确定它们是否相关 - 感到困惑 - 有人有线索吗?

编辑:根据最初的答案,我尝试使用:

import * as Stats from 'stats.js'

我收到错误消息:

Uncaught TypeError: Cannot set property 'Stats' of undefined

引用此行:

(function(f,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"===typeof define&&define.amd?define(e):f.Stats=e();})(undefined,function(){var f=function(){function e(a){c.appendChild(a.dom);return a}function u(a){for(var d=0;d<c.children.length;d++)c.children[d].style.display=d===a?"block":"none";l=a;}var l=0,c=document.createElement("div");c.style.cssText="position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000";c.addEventListener("click",function(a){a.preventDefault();

__

我尝试过:

const Stats = require('stats-js');

并收到错误消息:

Uncaught ReferenceError: require is not defined

__

我尝试过:

import Stats from 'stats-js'

并收到此消息:

(!) Unresolved dependencies
https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency
stats-js (imported by src\main.js)(!) Missing global variable name
Use output.globals to specify browser global variable names corresponding to external modules
stats-js (guessing 'Stats')

听起来这最后一个错误最有用?我按照错误消息中的链接操作,但仍然无法修复它。

3个回答

该库不提供 es6 默认导出。

import * as Stats from 'stats-js'
// or
const Stats = require('stats-js')
// or
import Stats from 'stats-js'

xMayank
2020-07-06

我的错误与您的错误相似,但是我找到了原因,并在导入

150099516

时使用了以下代码(对不起,使用翻译人员)

william-wwh
2022-03-27

如果有人需要答案,请尝试导入不带花括号的统计数据:

import Stats from "three/examples/jsm/libs/stats.module.js";
Aleksandra Vranjevac
2023-05-18