gpt4 book ai didi

javascript - Typescript/Electron/Webpack 模块如何/为什么有绝对路径?

转载 作者:搜寻专家 更新时间:2023-10-30 20:53:01 25 4
gpt4 key购买 nike

我在 Electron 项目中使用 react-dates,它需要通过以下方式进行初始化:

 import 'react-dates/initialize';

这在内部设置了一些稍后使用的变量。问题是,当我接下来输入使用这些变量的代码时,出现异常,因为它们仍然为空。

结果是 Chrome/Electron 将它们视为 2 个单独的文件,即使它们是磁盘上的同一个文件。闯入设置文件时,Chrome 报告以下路径(第一次访问/第二次访问)

C:\src\Project\node_modules\react-with-styles\lib\ThemedStyleSheet.js
webpack:///./node_modules/react-with-styles/lib/ThemedStyleSheet.js

好吧:这很奇怪 - 是什么给了?在哪里/怎么会发生这种情况?我认为这与我的 webpack 设置有关 - 如果重要的话,我正在使用 TsConfigPathsPlugin 和输出/路径。来 self 的网络包:

/**
* Base webpack config used across other specific configs
*/

import path from 'path';
import webpack from 'webpack';
import { dependencies } from '../package.json';

const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');

export default {
externals: [...Object.keys(dependencies || {})],

module: {
rules: [
{
test: /\.tsx?$/,
exclude: /node_modules/,
use: [
{
loader: 'babel-loader',
options: {
cacheDirectory: true
}
},
'ts-loader'
]
},
{
test: /\.js$/, // Transform all .js files required somewhere with Babel
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
cacheDirectory: true
}
}
}
]
},

output: {
path: path.join(__dirname, '..', 'app'),
// https://github.com/webpack/webpack/issues/1114
libraryTarget: 'commonjs2'
},

/**
* Determine the array of extensions that should be used to resolve modules.
*/
resolve: {
extensions: ['.js', '.ts', '.tsx', '.json'],
plugins: [new TsconfigPathsPlugin({ configFile: './tsconfig.json' })]
},

plugins: [
new webpack.EnvironmentPlugin({
NODE_ENV: 'production'
}),

new webpack.NamedModulesPlugin()
]
};

我的 tsconfig 使用 baseUrl 来重新映射路径

{
"compilerOptions": {
"target": "es5",
"baseUrl": "./app/",
"jsx": "react",
"module": "es2015",
"moduleResolution": "node",
"noUnusedLocals": true,
"pretty": true,
"sourceMap": true,
"resolveJsonModule": true,
"lib": ["dom", "es5", "es6", "es7", "es2017"],

"allowSyntheticDefaultImports": true // no errors with commonjs modules interop
//"strict": true,
//"strictFunctionTypes": false,
},
"exclude": ["node_modules", "**/node_modules/*"]
}

非常感谢任何关于在哪里/如何解决这个问题的建议!

-- 编辑:

我不认为磁盘上有两个物理副本,npm -ls react-dates 的输出如下

C:\<project>\manager-ts>npm ls react-dates                                                                 
erb-typescript-example@0.17.1 C:\<project>\manager-ts
`-- react-dates@20.1.0
C:\<project>\manager-ts>

最佳答案

这不是一个修复程序,可能对其他人的搜索帮助不大,但它确实让我畅通无阻。

我创建了第二个 typescript 模块,它使用 react-dates 定义组件。该模块被编译为 es5,然后“yarn link”-ed 到我的主应用程序中。虽然我从来没有弄清楚为什么会有差异(而且我仍然/也从 ethers.js 收到重复的初始化警告),但这至少解决了这个问题。

关于javascript - Typescript/Electron/Webpack 模块如何/为什么有绝对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55438675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com