我有一个反应应用程序(应用程序 A),大约 2 年前使用 create-react-app 创建,它被弹出。该应用程序作为 commonjs2 模块导出并在 NPM 包中提供,以用于 next.js 项目(应用程序 B)。
一切都很顺利,直到我更新了应用程序 A 中的一些包,其中包含我们使用的一些通用组件。在应用程序 B 中导入时的错误是该窗口未定义,可能是由于 SSR。
我在 app A 的 webpack 配置中使用globalObject: 'this'.
现在,当我尝试在应用程序 B 中导入应用程序 A 时,错误消息是:
TypeError: Cannot read property 'webpackJsonp' of undefined
Run Code Online (Sandbox Code Playgroud)
我假设某处有人试图打电话window['webpackJsonp']?
我已经尝试更改 webpackJsonpFunction,但正如预期的那样,它只会尝试获取未定义的不同属性。
任何帮助将不胜感激!
完整的堆栈跟踪:
[ error ] TypeError: Cannot read property 'webpackJsonp' of undefined
at /Users/syberen/projects/parentcompany/pblx-store-detail/build/static/js/main.js:1:2087
at Object.<anonymous> (/Users/syberen/projects/parentcompany/pblx-store-detail/build/static/js/main.js:1:2203)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Module.m._compile (/Users/syberen/projects/parentcompany/companyname/node_modules/ts-node/src/index.ts:473:23)
at Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Object.require.extensions.<computed> [as .js] (/Users/syberen/projects/parentcompany/companyname/node_modules/ts-node/src/index.ts:476:12)
at Module.load (internal/modules/cjs/loader.js:643:32)
at …Run Code Online (Sandbox Code Playgroud) 我正在完成http://www.mimicmuziek.nl 的工作。我在导航栏上使用了 bootstrap .sticky-top 类,但是当我使用 Chrome 时,导航栏上方似乎有一个 1px 的微小间隙,我可以看到内容。使用 Safari 时不会发生。任何有关如何解决此问题的想法将不胜感激!
编辑:我刚刚在我女朋友的电脑上试了一下,在那里工作正常
我在 React 中使用 create-react-app 创建了一个 npm 包。由于react和react-dom被假定在宿主项目中,我将它们列为我的 package.json 中的 peerDependencies 和 devDependencies。
我了解到通过这种方式两者仍然被捆绑在一起,并且为了防止我必须在 webpack 配置的外部列出它们,我成功地做到了:
externals: {
react: {
commonjs: 'react',
commonjs2: 'react',
amd: 'React',
root: 'React',
},
'react-dom': {
commonjs: 'react-dom',
commonjs2: 'react-dom',
amd: 'ReactDOM',
root: 'ReactDOM',
},
},
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么我必须经历这第二步?不应该将它们列为 peerDependencies 就足够了吗?如果不是,在这种情况下, peerDependencies 与常规依赖项有何不同?