在发布为 npm 包之前使用 npm 链接测试组件时出现重复的 ReactJS 导入问题
我有一个像这样的简单组件。 从'react'导入React,{useState}; 函数 MyComponentWithState(props) { const [值,setValue] = useState(0); 返回 ( 我的价值... 我有一个像这样的简单组件。 import React, {useState} from 'react'; function MyComponentWithState(props) { const [value, setValue] = useState(0); return ( <p>My value is: {value}</p> ) } export default MyComponentWithState; 我想将它作为单独的包发布在 NPM 上。因此,为此我准备了 package.json 和 webpack.config.js,如下所示。 package.json: { "name": "try-to-publish", "version": "0.0.1", "description": "Just a test", "main": "build/index.js", "scripts": { "start": "webpack --watch", "build": "webpack" }, "author": { "name": "Behnam Azimi" }, "license": "ISC", "peerDependencies": { "react": "16.9.0", "react-dom": "16.9.0" }, "dependencies": { "react": "16.9.0", "react-dom": "16.9.0", "prop-types": "15.7.2", "react-scripts": "3.1.1", "webpack": "4.39.3" }, "devDependencies": { "@babel/core": "7.6.0", "@babel/plugin-proposal-class-properties": "7.5.5", "@babel/preset-env": "7.6.0", "@babel/preset-react": "7.0.0", "babel-loader": "8.0.6", "babel-plugin-transform-object-rest-spread": "6.26.0", "babel-plugin-transform-react-jsx": "6.24.1", "css-loader": "3.2.0", "node-sass": "4.12.0", "sass-loader": "8.0.0", "style-loader": "1.0.0", "webpack-cli": "3.3.8", "webpack-external-react": "^1.1.2" } } webpack.config.json: const path = require('path'); module.exports = { entry: './src/index.js', output: { path: path.resolve(__dirname, 'build'), filename: 'index.js', libraryTarget: 'commonjs2' }, module: { rules: [ { test: /\.(js|jsx)$/, exclude: /node_modules/, include: path.resolve(__dirname, 'src'), use: { loader: "babel-loader" } }, ] }, resolve: { alias: { 'react': path.resolve(__dirname, 'node_modules/react'), 'react-dom': path.resolve(__dirname, 'node_modules/react-dom'), } }, externals: { 'react': "commonjs react", 'react-dom': "commonjs react-dom" }, }; 这是我的 .babelrc: { "presets": [ "@babel/preset-env", "@babel/preset-react" ], "plugins": ["@babel/plugin-proposal-class-properties"] } 当我将组件发布到 NPM 并使用 `npm install 将其安装到我的另一个 ReactJs 项目中时,这些配置就像魅力一样,但我的观点是本地测试! 我想在发布之前测试这个组件/库。为此,我使用 npm link 功能将我的组件与我的主 ReactJS 项目链接起来。 正如您在上面看到的,我的组件是功能性的,我也使用了钩子。因此,当我将本地链接的库注入到我的主 ReactJs 项目中时,会遇到此错误, 无效的挂钩调用。钩子只能在函数组件的主体内部调用。发生这种情况可能是由于以下原因之一: 1.您的React和渲染器版本可能不匹配(例如React DOM) 2. 你可能违反了 Hooks 规则 3. 您可能在同一个应用程序中拥有多个 React 副本 我的问题与第三个原因有关。我的项目使用 ReactJs 并导入一次,我的组件也会导入 React!我的意思是在一个项目中两次 React 导入!. 我的 Webpack 配置中还有关于 react 和 react-dom 的 externals 配置。 我应该怎么做才能解决这个问题?我的错误在哪里? 更新: 我也尝试过 @sung-m-kim 和 @eddie-cooro 所说的,但没有成功!意思是,我更改了 package.json 并从 react 中删除了 react-dom 和 dependencies 并将它们添加到 devDpendencies。 我终于通过这些步骤解决了这个问题。 运行npm链接里面 <your-library-package>/node_modules/react 还有 运行npm链接里面 <your-library-package>/node_modules/react-dom 然后在 应用程序根目录中运行 npm link react 和 npm link react-dom 并且不要忘记将 React 和 React-dom 作为库中的外部对象保留 // webpack.config.js const externals = { "react": "react", "react-dom": "react-dom", } module.exports = { . . . externals } 我解决了我的问题。我使用 RollupJS 而不是 Webpack 作为捆绑工具进行捆绑。 这是我的rollup.config.js: import {uglify} from 'rollup-plugin-uglify' import babel from 'rollup-plugin-babel' export default { input: "./src/index.js", external: ['react', 'react-dom'], output: { name: 'test-lib', format: "cjs", }, plugins: [ babel({ exclude: "node_modules/**" }), uglify(), ], }; 和我的package.json: { "name": "test-lib", "version": "1.0.0", "main": "dist/test-lib.min.js", "scripts": { "build": "rollup -c -o dist/test-lib.min.js" }, "author": "Behnam Azimi", "license": "ISC", "peerDependencies": { "react": "^16.9.0", "react-dom": "^16.9.0" }, "devDependencies": { "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", "@babel/preset-react": "^7.0.0", "rollup": "^1.21.4", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.1.0", "rollup-plugin-uglify": "^6.0.3" } } 经过这些更改,npm link在我的ReactJS(Hooks)项目中真正发挥了作用。 请注意,这只是一个简单的 Rollup 配置来展示我的解决方案,您可以在配置中添加多种内容,例如热重载、样式加载器和许多其他插件。 仅在 package.json 的 react 部分(而不是 react-native)内设置 peerDependencies 和 dependencies 包。另外,对于本地开发(当您的包未包含在任何其他 React 项目中并且您想在本地运行它时),您可以使用 devDependencies 字段。 我在打字稿反应项目中解决了这个问题。 可能,当使用 npm link 时,请使用主应用程序项目和组件项目中的 react。 因此,在您的 package.json 中从 react 和/或 dependencies 中删除 devDependencies 检查答案:https://stackoverflow.com/a/62807950/5183591 我也有同样的问题。 就我而言,我开发了一些 UI 组件作为包,其中有一个包含 React 应用程序的示例文件夹,用于创建 React 应用程序。 问题是,当我使用 npm i ../ 将包安装到示例应用程序中时,它会将包中的所有文件安装到示例应用程序中,包括 node_modules 文件夹。由于我已经安装了 react 和 react-dom 作为对等依赖项,示例应用程序现在有两个不同的 React 副本。 从包中删除 node_module 文件夹并重新安装包再次解决了我的问题。
父级如何更改子组件内设置的Open -Modal值?我们希望父母能够打开模式。 parent.vue 从“ ch ...</desc>进口孩子 <question vote="0"> <p>父级如何更改子组件内设置的Open -Modal值?我们希望父母能够打开模式。 </p> -parent.vue<p> </p><code><script setup> import Child from "Child.vue"; </script> <template> <Child/> </template> </code><pre> Child.Vue</pre> <p><code><script setup> import { ref } from "vue"; const openModal = ref(false); </script> <template> stuff </template> </code></p> <pre> </pre> </question>在儿童组件中,您可以使用<answer tick="false" vote="0"><code>defineExpose</code><p>使父级访问Open -Modal功能。 <pre></pre></p> <p> </p><code>const { createApp, ref, defineExpose } = Vue; // Child const ChildComponent = { template: ` <div v-if="openModal"> <div> <p>Modal is open!</p> <button @click="closeModal">Close</button> </div> </div> `, setup() { const openModal = ref(false); const closeModal = () => { openModal.value = false; }; defineExpose({ openModal }); return { openModal, closeModal }; } }; // Parent const App = { components: { ChildComponent }, setup() { const childRef = ref(null); const openChildModal = () => { if (childRef.value) { childRef.value.openModal = true; } }; return { childRef, openChildModal }; } }; createApp(App).mount("#app");</code><div data-babel-preset-ts="false" data-lang="js" data-hide="false" data-console="true" data-babel="false" data-babel-preset-react="false"> <div><code><script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script> <div id="app"> <button @click="openChildModal">Open Modal</button> <child-component ref="childRef"></child-component> </div></code><pre> </pre> <pre> </pre></div> </div> <p></p>
考虑一个带有文本输入的简单 Vue 组件(链接)。 从 'vue' 导入 { ref } const 消息 = ref('') 函数 onInput(e) { 让 value = e.target.value; 如果(值==='')...</desc> <question vote="0"> <p>考虑一个带有文本输入的简单 Vue 组件(<a href="https://play.vuejs.org/#eNp9kc1uwjAQhF9l5YtBQuHQnmhS9Ucc6KGt2h59icImNXVsyz8UCeXdu3aAckDc4plv4xnvnj1aW2wjsgUrfeOkDeAxRHsvtOytcQH24LCFAVpneuCEcqGFboz2AXrfQZX8CefTJLdRN0EaDUavtI1hglPYCw2gMMC2VhGJxyLUrsNQZOEu2bKFycGuKuDApyea80zQVSNP0nFuELqcj6kpLx0C9lbVAekEUMqUABaZrgSjPwgGD1ml4yEhSXPCy/nZLJux4KlhK7ti442mx8klBGtMb6VC92ZTSy/YYqyXvFop8/uSteAizo56843NzwV943dJE+zdoUe3RcFO3vhAo738fMUdfZ/M3qyjIvqK+YHeqJgyjthT1GuKfcbltKu8Yqm7L7/cBdT+WCoFTeSQecFo7c9Xqv/HvSlu8xwthw1/RIzIQw==" rel="nofollow noreferrer">链接</a>)。</p> <pre><code><script setup> import { ref } from 'vue' const msg = ref('') function onInput(e) { let value = e.target.value; if (value === ' ') value = ''; msg.value = value; } </script> <template> <input :value="msg" @input="onInput" /> </template> </code></pre> <p>我想禁用此输入中的第一个空格,即如果用户输入空格,则输入字段应保持为空。但这不起作用。我猜这是因为 Vue 检查 <pre><code>msg</code></pre> 没有改变并拒绝组件渲染。</p> <p>我的下一个尝试是强制渲染组件(<a href="https://play.vuejs.org/#eNp9UstOwkAU/ZWbiUkhMWWhKwRRCQtcqPGxm01TbnGwnZnMA2tI/9070xYwGDZN5zxuzz2dHbvXOt16ZGM2sbkR2oFF5/Utl6LSyjjYrdHNvTEo3VJal8kcGyiMqiAhX3LQgcEC/lJc5oo8UNk1TAM/SJLhARbdPOJOPzIY3gRl4WXuhJKg5FJq7wY4hB2XACU62GalD25MXWZoRBoB8gGIAgYdPZ1CAklng70pSaIQQrrWSGA7IKAt10ecpdqo+meWXhTK5PihV5lrIwaVocqMjIcmPE4ncknEZNRWTOXSwWGlS5pCJ4CJCMvBOKqnnNEEzuAuonTslidoRPLJ6MjLLpmz1Gch1unGKkl/Mi7KWa4qLUo0zzoUaDkb9xVwlpWl+n6MmDMeL3s8/8T86x98Y+uAcfZi0KLZImd7ru2+pRdvT1jT+56s1MqXpD5DvqJVpQ8ZW9mDlyuKfaSLaZfxngm5freL2qG0/VIhaKw+6jmjuzc/s/oh7lV63f2yhjW/2ToDyQ==" rel="nofollow noreferrer">链接</a>)。</p> <pre><code><script setup> import {getCurrentInstance} from 'vue' import { ref } from 'vue' const msg = ref('') const instance = getCurrentInstance(); function onInput(e) { let value = e.target.value; if (value === ' ') { value = ''; msg.value = value; instance?.proxy?.$forceUpdate(); return; } msg.value = value; } </script> <template> <input :value="msg" @input="onInput" /> </template> </code></pre> <p>它有效,但有限制。我的项目有一个大的组件树,并且 <pre><code>$forceUpdate</code></pre> 仅更新当前组件,没有子组件。</p> <p>我还尝试通过更改组件上的 <pre><code>key</code></pre> 来重新渲染整个子三个,但在这种情况下我失去了输入的焦点。</p> <p>总而言之,我似乎错过了什么。我不敢相信这么简单的任务需要奇怪的解决方法。请帮助我找到一种简单且“最佳实践”的方法来禁用 html 输入中的第一个空格。</p> </question> <answer tick="false" vote="0"> <p>您应该使用正则表达式从字符串中删除第一个空白字符。</p> <p></p><div data-babel-preset-ts="false" data-lang="js" data-hide="false" data-console="true" data-babel="false" data-babel-preset-react="false"> <div> <pre><code> const { createApp, ref } = Vue; createApp({ setup() { const inputValue = ref(''); const removeFirstSpace = () => { // 使用正则表达式去除第一个空格 inputValue.value = inputValue.value.replace(/^\s/, ''); }; return { inputValue, removeFirstSpace }; } }).mount('#app');</code></pre> <pre><code><!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vue 3 Input 示例</title> <script src="https://unpkg.com/vue@3"></script> <style> body { font-family: Arial, sans-serif; margin: 20px; } </style> </head> <body> <div id="app"> <h1>输入示例</h1> <input type="text" v-model="inputValue" @blur="removeFirstSpace" placeholder="输入一些内容"> <p>你输入的内容是: {{ inputValue }}</p> </div> </body> </html></code></pre> </div> </div> <p></p> </answer> </body></html>
如何使用 karma-babel-preprocessor 和 PhantomJs 保留行正确的行号?
当我像这样使用 karma-babel-preprocessor 的记录配置时 module.exports = 函数(配置){ 配置.设置({ 预处理器:{ 'src/**/*.js': ['babel'], '测试/*...
在项目上运行 npm run start:webpack 脚本会产生长达几页的亮黄色警告: [webpack.cache.PackFileCacheStrategy/webpack.FileSystemInfo] 解决“@babel/he...
[fwdrap preset_id="VOICEOVER" playlist_id="VoiceOvers" start_playlist_id="Audiobooks" start_track_id="preset"] [fwdrap preset_id="VOICEOVER" playlist_id="VoiceOvers" start_playlist_id="Narration" start_track_id="preset"]
Django - Oracle Cloud Bucket 与 django-storages 集成
我已将 django-storages 配置为指向 OCI 存储桶。下面是配置: AWS_S3_ACCESS_KEY_ID = env('AWS_BUCKET_KEY') AWS_SECRET_ACCESS_KEY = env('AWS_BUCKET_SECRET')
在大多数情况下,Python 的 .env 文件位于 .gitignore 目录中。然而,将 .env 文件放在我的私人存储库中对我来说至关重要。我需要能够将其 git pull 到我的本地机器...
尝试将我的 nextjs 项目从 babel 迁移到 swc,它会抛出错误“当前未启用对实验性语法‘jsx’的支持”
我正在尝试将我的 NextJS 项目(NextJS 版本 13)从 babel 迁移到 swc。这是我的 bablerc 文件。我不断收到错误“当前未启用对实验性语法‘jsx’的支持...
Jest + TypeScript + Babel 未知选项:.0
我使用 Jest 为我的一些 Fauna DB 操作编写了一个集成测试。我尝试测试的源代码 (fauna.ts) 和测试本身 (fauna.test.ts) 都是 TypeScript 文件。我已经
将 appsettings.{env}.json 合并到 .NET Core 3.1 中的 appsettings.json
我了解 .NET Core 3.1 中的默认行为是,当您发布解决方案时,它会将所有 appsettings.{env}.json 文件复制到最终包中,这取决于您的环境...
我正在使用 PyCharm 和 GitHub Copilot,并希望阻止 Copilot 使用 api 令牌读取 .env 文件。 我注意到有一个选项可以“禁用文本伙伴的完成”。不过,我是
我在 Heroku 文档中看到了这一点: Heroku Exec 创建的 SSH 会话不会将配置变量设置为环境变量(即会话中的 env 不会列出由 heroku conf 设置的配置变量...
我目前正在使用 Python Flask。我试图更好地理解环境变量的配置。我知道如何在开发时将环境变量传递给我的代码
如何在 VS Code 中从 GitHub Copilot 中排除特定文件(如 .env)?
我目前正在 Visual Studio Code 中使用 GitHub Copilot,并试图找到一种方法来阻止 Copilot 访问某些文件类型,特别是 .env 文件,其中包含敏感信息...
为什么 VSCode 将内联注释显示为 .env 文件中环境变量的一部分?
VSCode 在导入环境变量时显示 .env 文件中的内联注释和引号,我不明白为什么。如果我从终端运行脚本,则不会发生这种情况,仅在
#!/usr/bin/env python3 导入单元测试 从unittest.mock导入补丁 用户类(对象): def __init__(自身): self.__name = 无 self.__authorized_users = ["我", &q...
在我删除 micromamba 环境后 micromamba env 删除 -n 我跑 micromamba 环境列表 它显示了一个称为“环境”的 .mamba_trash ...
如何在 pyproject.toml 中指定 setuptools 入口点
我有一个像这样的setup.py: #!/usr/bin/env python 从 setuptools 导入安装程序,find_packages 设置( 名称=“我的项目”, package_dir={"": "src"}, 包裹=
我遵循了本教程。 https://www3.ntu.edu.sg/home/ehchua/programming/howto/Environment_Variables.html 但不幸的是,它似乎不起作用。 (payo-py3.10) PS C:\Users\ser> 设置 MY_VAR=a...
我有以下代码,用于使用 pyarrow 飞行在 Dremio 中执行查询: DremioConnector 类: 环境:str auth_token:str def __init__(self, env: str, auth_token: str): ...
docker 的 django-environ 和 Postgres 环境
我正在为我的 Django 项目使用 django-environ 包。 我在 .env 文件中提供了数据库 URL,如下所示: DATABASE_URL=psql://dbuser:dbpassword@dbhost:dbport/dbname 我的数据库设置在
到目前为止我有这个: 来自 --platform=linux/amd64 amd64/ubuntu:noble 环境术语 Linux ENV DEBIAN_FRONTEND 非交互式 SHELL [“/bin/bash”,“-c”] 环境外壳 /bin/bash 运行 apt upd...
我正在尝试在我的项目中设置一个子域,但由于某种原因它不起作用。 路由::domain('{用户名}.' .env('APP_URL'))->group(function () { 返回“测试”; }); 它我...
Python:load_pem_private_key 无法识别生产中的我的私钥
在本地,我有一个 .env 文件,其中包含单行 RSA 密钥,如下所示: PRIVATE_KEY="-----开始 RSA 私钥----- 密钥内容 -----结束 RSA 私钥----- ” 每 64 个字符
如何从字符串值设置(Django)celerybeat cron 计划
我正在使用 Django 和 celerybeat。我想通过 env var (cron 的字符串值)配置 cron 计划。 我们目前正在使用 celery.schedules 设置这样的 cron 计划。
我已经训练了一个 DQN 代理,我想使用gym.wrappers.RecordVideo 录制并保存单集的视频。到目前为止,这是我的代码: 从gym.wrappers导入RecordVideo env =gym.make(“
这是一个错误吗? #!/usr/bin/env python3.6 # 文件名:tmp.py 导入系统 打印(系统.argv) 调用: python tmp.py 查找 . -名称“*.py” 实际输出: ['tmp.py', '查找', '.', '-name', '*.py'] 预计...
ML.net - CreateTimeSeriesEngine
我正在使用 ML.net 进行时间序列分析项目。在这里我尝试预测欧元兑美元的交易汇率。我从 CSV 文件加载数据并使用内存数据创建 IDataView。 列表 我正在使用 ML.net 进行时间序列分析项目。在这里我尝试预测欧元兑美元的交易汇率。我从 CSV 文件加载数据并使用内存数据创建 IDataView。 List<RateData> infoList = new List<RateData>(); // populate list infoList = FileParser(infoList); IDataView data = mlContext.Data.LoadFromEnumerable<RateData>(infoList); 我设法像这样运行预测估计器 var forecastEstimator = mlContext.Forecasting.ForecastBySsa( outputColumnName: nameof(RatePrediction.CurrentRate), inputColumnName: nameof(RateData.HistoricalRate), windowSize: 14, seriesLength: numRateDataPoints, trainSize: numRateDataPoints, horizon: 1, confidenceLevel: 0.95f ); SsaForecastingTransformer forecaster = forecastEstimator.Fit(RateDataSeries); 然后我尝试创建这样的预测引擎 var ForecastEngine = Forecaster.CreateTimeSeriesEngine(mlContext); 这里我遇到了一些错误。 我的输入和输出类如下: public class RateData { public DateTime TransactionDate { get; set; } public float HistoricalRate { get; set; } } public class RatePrediction { public float CurrentRate; } 我有这样的错误 System.InvalidOperationException: Can't bind the IDataView column 'CurrentRate' of type 'Vector<Single, 1>' to field or property 'CurrentRate' of type 'System.Single'. at Microsoft.ML.Data.TypedCursorable`1..ctor(IHostEnvironment env, IDataView data, Boolean ignoreMissingColumns, InternalSchemaDefinition schemaDefn) at Microsoft.ML.Data.TypedCursorable`1.Create(IHostEnvironment env, IDataView data, Boolean ignoreMissingColumns, SchemaDefinition schemaDefinition) at Microsoft.ML.Transforms.TimeSeries.TimeSeriesPredictionEngine`2.PredictionEngineCore(IHostEnvironment env, InputRow`1 inputRow, IRowToRowMapper mapper, Boolean ignoreMissingColumns, SchemaDefinition outputSchemaDefinition, Action& disposer, IRowReadableAs`1& outputRow) at Microsoft.ML.PredictionEngineBase`2..ctor(IHostEnvironment env, ITransformer transformer, Boolean ignoreMissingColumns, SchemaDefinition inputSchemaDefinition, SchemaDefinition outputSchemaDefinition, Boolean ownsTransformer) at Microsoft.ML.Transforms.TimeSeries.TimeSeriesPredictionEngine`2..ctor(IHostEnvironment env, ITransformer transformer, Boolean ignoreMissingColumns, SchemaDefinition inputSchemaDefinition, SchemaDefinition outputSchemaDefinition) at Microsoft.ML.Transforms.TimeSeries.PredictionFunctionExtensions.CreateTimeSeriesEngine[TSrc,TDst](ITransformer transformer, IHostEnvironment env, Boolean ignoreMissingColumns, SchemaDefinition inputSchemaDefinition, SchemaDefinition outputSchemaDefinition) at USD_EURO_Conversion_rate.TimeSeriesModelHelper.FitAndSaveModel(MLContext mlContext, IDataView RateDataSeries, String outputModelPath) 预测类中的属性需要是float[]类型;向量/数组而不是单个值,例如 public class RatePrediction { public float[] CurrentRate; } 类似于此处的Microsoft 示例。
导入错误:无法从“jinja2”导入名称“escape”。运行 docker compose up 时出现错误
我分别有以下 Dockerfile 和 docker-compose: Dockerfile: 来自Python:3.9 ENV Python 无缓冲 1 工作目录/应用程序 复制requirements.txt /app/requirements.txt 运行 pip install -r
dockerizing Laravel + vue。我遇到数据库连接问题 SQLSTATE[HY000] [2006] MySQL 服务器已消失
这是我的 docker.yml 文件 服务: 网址: 图片:应用程序名称:最新 建造: 目标:网络 语境: 。 环境文件: -.env 端口: - “8000:80” 卷: ...
我尝试在cmd中执行Java程序,但使用“java”运行程序时出现错误
我可以在VS code中成功运行程序: 在 VS Code 中运行 命令: /usr/bin/env /usr/lib/jvm/java-17-openjdk-amd64/bin/java -XX:+ShowCodeDetailsInExceptionMessages -cp /home/bignosecss/.vscode-...
如何通过 GHCup+cabal 管理 XMonad(以及 xmobar 和其他相关内容)?
事实证明执行起来就足够了 cabal install --package-env=$HOME/.config/xmonad --lib 基础 xmonad xmonad-contrib 但我不明白的是: 为什么这有效? 为什么要更新...
运行特定测试时未找到 Cargo `OUT_DIR` env var
有人可以帮助我理解这一点吗? 我有一个 Rust 项目,有一个 lib 板条箱:my_crate_2。这是它的文件结构: 我的项目/ ├── Cargo.toml └── 源文件/ └── main.rs 我的箱子2/ ├──...
将 Laravel 的 .env 文件复制到 Docker 容器中
设置 我正在 Ubuntu 服务器上运行 Docker,并尝试创建一个 Laravel 容器来使用 artisan 运行我的网站。 Laravel 项目位于 GitHub 存储库内,我将该项目克隆到...
第一个文件(trigger.sh): #!/usr/bin/env bash echo“配置测试” 回显“来源1” 来源./run-1.sh -m“乔治” 回显“来源2” 来源./run-1.sh -m &q...
我正在开发一个使用前端的项目:react native,后端:nodejs 和 mysql,为了接受一些付款,我使用 stripe,但我遇到了很大的问题。在 init 原生反应中...
我想垂直堆叠一组标签,并且希望它们左对齐。 我已经尝试过这个: #!/usr/bin/env tclsh 包需要 Tk # 初始化全局计数器 设置 widgetCount...
环境变量 CORS_ALLOW_ORIGIN 带有简单与双美元符号
在 .env 文件中,我必须将变量 CORS_ALLOW_ORIGIN 设置为 ^https?://(.*)(:[0-9]+)?$$,并带有双美元符号。团队中的所有其他开发人员似乎都对最后的单个 $ 感到满意......
如何让 React 应用程序使用 Docker 容器中的环境变量?
我有一个 React 应用程序,它使用 webpack.config.js 中指定的环境变量。问题是环境变量在构建期间被硬编码。如何使应用程序使用 env varia...
我正在 Win7 主机上的本地 Vagrant arch 机器上运行 Django。我在 .env 文件中从 Django 设置了环境变量。在我的应用程序中,所有静态文件都正确提供,并且一切正常......
我已在我的网络服务器上部署了我的项目。 .env 包含 Web 数据库的正确设置,但由于某种原因 Laravel 仍然尝试连接到本地主机。 问题是,如果我使用...
尝试/失败地分割两个不同的字符,但也不分割空间。 #!/usr/bin/env perl 使用严格; 我的 $line = "-abc=123 +def=456 -ghi 789"; 我的@arr = split(/([+-]\S+)/,$line); 为我的$
我正在使用 Flask 开发网站,在开发过程中我使用以下文件运行 Flask: #!/usr/bin/env python 从日期时间导入日期时间 从应用程序导入应用程序 导入配置 如果__n...
如何在 React 组件的 Jest 测试中模拟 MUI5 Pro 许可证密钥
我目前正在将 MUI v5 Pro 组件集成到我的 React 库中,然后将这些库组件导入到我的主机应用程序中。我已经在两个 Libra 的 .env 文件中设置了 MUI 许可证密钥...
请我尝试使用外部 CDN 运行 React 应用程序,并且 html 文件出现问题: 未捕获的引用错误:require 未定义index.html:3 这是html代码: 请我尝试使用外部 CDN 运行 React 应用程序,并且在 html 文件上遇到问题: 未捕获的ReferenceError:require未定义index.html:3 这是html代码: <!DOCTYPE html> <html> <head> <meta charset='UTF-8'> <link rel="stylesheet" href="styles/style.css"> <script src='https://unpkg.com/[email protected]/umd/react.production.min.js'></script> <script src='https://unpkg.com/[email protected]/umd/react-dom.production.min.js'></script> <script src='https://unpkg.com/[email protected]/umd/react-router-dom.min.js'></script> <script src='https://unpkg.com/[email protected]/babel.js'></script> </head> <body> <div id='root'></div> <script type='text/babel'> import Todo from 'component/Todo.js'; const App = () =>( <div> <h1>My Todos</h1> <Todo /> </div> ) ReactDOM.render(<App />, document.querySelector('#root')); </script> </body> </html> 这是 JavaScript 代码 function Todo (){ return (<div className="card"> <h2>TITLE</h2> <div className="actions"> <button className="btn">Delete</button> </div> </div>); } export default Todo; 您可以像这样从另一台服务器导入外部脚本: componentDidMount() { const script = document.createElement("script"); script.src = "/static/libs/your_script.js"; script.async = true; script.onload = () => this.scriptLoaded(); document.body.appendChild(script); } 然后确保您的文件已加载: scriptLoaded() { // your stuff to do! } 另一种方法是使用react Helmet: 首先使用以下命令安装它: npm install --save react-helmet 然后像这样使用它 <Helmet> <script src="www.test.ts" /> </Helmet> 请注意,这样您的脚本将加载到 <head> 在您的index.html 文件中添加 Office.js 脚本引用: <script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript"></script> 在 React 应用程序中初始化 Office.js 库。您可以在index.js 文件中执行此操作: const Office = window.Office; Office.initialize = () => { ReactDOM.render( <YourComponent />, document.getElementById('root') ); };
我有以下html和css代码: html,正文{ 保证金:0; } #包含...</desc> <question vote="0"> <p>我有以下 html 和 css 代码:</p> <pre><code><!DOCTYPE html> <html> <head> <style type="text/css"> html, body { margin: 0; } #container{ width:100vw; height:100vh; background-color: green; } #left-bar{ position: absolute; width: 300px; height: 100vh; background-color: red; overflow: scroll; } </style> </head> <body> <div id="container"> <div id="left-bar" > </div> </div> </body> </html> </code></pre> <p>它给出: <a href="https://i.sstatic.net/sbXnw.png" rel="nofollow noreferrer"><img src="https://cdn.txt58.com/i/AWkuc3N0YXRpYy5uZXQvc2JYbncucG5n" alt="extra padding overflow scroll"/></a></p> <p>左侧栏内有一个填充,我不明白为什么以及如何删除它。</p> <p>我尝试过的事情:</p> <ul> <li>在左侧栏上添加<pre><code>padding: 0;</code></pre>,它不起作用(也可以使用<pre><code>!important</code></pre>)。</li> <li>使用检查器来了解填充的来源。我没找到。</li> <li>删除左侧栏上的<pre><code>overflow: scroll</code></pre>。它有效,但我希望左栏具有以下行为 <pre><code>overflow: scroll</code></pre></li> </ul> <p><strong>如何删除左栏中的填充?</strong></p> <p><strong>编辑:错误用完全相同的代码消失了。</strong></p> <p>现在使用相同的代码: <a href="https://i.sstatic.net/Ch1IF.png" rel="nofollow noreferrer"><img src="https://cdn.txt58.com/i/AWkuc3N0YXRpYy5uZXQvQ2gxSUYucG5n" alt="no padding"/></a></p> <p>我做了什么:</p> <ul> <li>重启电脑,bug依然存在</li> <li>添加CSS代码来设置滚动条的样式</li> <li>删除我添加的代码 --> bug 消失了</li> </ul> <p>我不明白为什么...</p> </question> <answer tick="false" vote="0"> <p>您看到的是一个空的滚动条。设置溢出<pre><code>overflow: auto</code></pre>。仅当内容溢出时才会显示滚动条。</p> <p></p><div data-babel="false" data-lang="js" data-hide="false" data-console="true"> <div> <pre><code><!DOCTYPE html> <html> <head> <style type="text/css"> html, body { margin: 0; } #container{ width:100vw; height:100vh; background-color: green; } #left-bar{ position: absolute; width: 300px; height: 100vh; background-color: red; overflow: auto; } </style> </head> <body> <div id="container"> <div id="left-bar" > </div> </div> </body> </html></code></pre> </div> </div> <p></p> </answer> <answer tick="false" vote="0"> <p>您可能会考虑使用一个具有最小滚动条的插件(也许是<a href="https://grsmto.github.io/simplebar/" rel="nofollow noreferrer">simplerbar</a>)。还可以考虑只做 <pre><code>overflow-y:scroll</code></pre> 以获得更容易接受的外观。您还可以更改滚动装订线的颜色<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/scrollbar-color" rel="nofollow noreferrer">colors</a></p> <p></p><div data-babel="false" data-lang="js" data-hide="false" data-console="true"> <div> <pre><code>var el1 = document.querySelector('[data-id=div1]'); var el2 = document.querySelector('[data-id=div2]'); instance1 = new SimpleBar(el1); instance2 = new SimpleBar(el2);</code></pre> <pre><code><script src="https://cdnjs.cloudflare.com/ajax/libs/simplebar/5.3.8/simplebar.min.js" integrity="sha512-2SAzoBQi2FbvWkvcsoYW4PH478pUu0gwa7BRA6YQxg6kCWUIOIDfFHMLH57GbWeLa+pkYitOD5j9mIhIt3CLKA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/simplebar/5.3.8/simplebar.min.css" integrity="sha512-uZTwaYYhJLFXaXYm1jdNiH6JZ1wLCTVnarJza7iZ1OKQmvi6prtk85NMvicoSobylP5K4FCdGEc4vk1AYT8b9Q==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <div dir="ltr"> <div data-id="div1" style="height: 300px; width: 200px; padding:10px; display: inline-block; border:1px solid gray; background: lightblue; "> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> </div> <section data-id="div2" style="height: 300px; width: 200px; padding:10px; display: inline-block; border:1px solid gray"> <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?</p> <p>But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness. No one rejects, dislikes, or avoids pleasure itself, because it is pleasure, but because those who do not know how to pursue pleasure rationally encounter consequences that are extremely painful. Nor again is there anyone who loves or pursues or desires to obtain pain of itself, because it is pain, but because occasionally circumstances occur in which toil and pain can procure him some great pleasure. To take a trivial example, which of us ever undertakes laborious physical exercise, except to obtain some advantage from it? But who has any right to find fault with a man who chooses to enjoy a pleasure that has no annoying consequences, or one who avoids a pain that produces no resultant pleasure?</p> </section> </div></code></pre> </div> </div> <p></p> </answer> </body></html>
大家好我正在将我的 vue3 项目从 js 迁移到 typescript,我遇到了这个问题: 这是我在 .vue 文件中的代码 const toto = (msg: string) => { </desc> <question vote="7"> <p>大家好,我正在将我的 vue3 项目从 js 迁移到 typescript,我遇到了这个问题:</p> <p><a href="https://i.stack.imgur.com/y5tG8.png" target="_blank"><img src="https://cdn.txt58.com/i/AWkuc3RhY2suaW1ndXIuY29tL3k1dEc4LnBuZw==" alt=""/></a></p> <p>这是我在 .vue 文件中的代码</p> <pre><code><script setup lang="ts"> const toto = (msg: string) => { console.log(msg) } </script> </code></pre> <p>这是我的 eslintrc.js</p> <pre><code>module.exports = { 'env': { 'browser': true, 'es2021': true }, 'extends': [ 'eslint:recommended', 'plugin:vue/vue3-essential' ], 'parserOptions': { 'ecmaVersion': 13, 'sourceType': 'module' }, 'plugins': [ 'vue' ], 'rules': { 'vue/multi-word-component-names': 'off', 'vue/object-curly-spacing': [2, 'always'], 'vue/html-closing-bracket-spacing': [2, { 'selfClosingTag': 'always' }], 'vue/max-attributes-per-line': [2, { 'singleline': { 'max': 1 }, 'multiline': { 'max': 1 } }], 'semi': [2, 'never'] } } </code></pre> </question> <answer tick="true" vote="10"> <p>您需要配置 eslint 以支持 typescript,因为 eslint 不支持开箱即用。 首先,您需要安装<a href="https://www.npmjs.com/package/@typescript-eslint/parser" rel="nofollow noreferrer">@typescript-eslint/parser</a>,然后安装<a href="https://www.npmjs.com/package/@typescript-eslint/eslint-plugin" rel="nofollow noreferrer">@typescript-eslint/eslint-plugin</a>。 安装完这些后,请按如下方式更新您的配置 - </p> <pre><code>module.exports = { 'env': { 'browser': true, 'es2021': true, node: true }, 'extends': [ 'eslint:recommended', 'plugin:vue/vue3-essential' ], 'parserOptions': { 'ecmaVersion': 12, 'sourceType': 'module', parser: '@typescript-eslint/parser' }, 'plugins': [ 'vue', '@typescript-eslint' ], 'rules': { 'vue/multi-word-component-names': 'off', 'vue/object-curly-spacing': [2, 'always'], 'vue/html-closing-bracket-spacing': [2, { 'selfClosingTag': 'always' }], 'vue/max-attributes-per-line': [2, { 'singleline': { 'max': 1 }, 'multiline': { 'max': 1 } }], 'semi': [2, 'never'] } } </code></pre> </answer> <answer tick="false" vote="1"> <p>就我而言,问题是我使用解析器选项作为数组,而不是字符串:</p> <pre><code> parserOptions: { - parser: ['@typescript-eslint/parser'], + parser: '@typescript-eslint/parser', }, </code></pre> </answer> <answer tick="false" vote="0"> <p>如果你在项目中同时使用 JS 和 TS,此配置有帮助</p> <pre><code> overrides: [ { files: ['*.vue'], parser: 'svelte-eslint-parser', parserOptions: { parser: { // Specify a parser for each lang. ts: '@typescript-eslint/parser', js: 'espree', typescript: '@typescript-eslint/parser' } } } ], </code></pre> </answer> <answer tick="false" vote="-1"> <p>我在节点 v12.22.9 上遇到了这个问题。通过升级到 v14.21.2,我不再遇到解析错误。您可以使用命令升级/安装</p> <pre><code>nvm install v14.21.2 </code></pre> </answer> </body></html>
Svelte slot 的功能是否像 vanilla-js/dom 一样(我似乎无法让它工作)。 在 html/js 中我可以这样做: 身体{颜色:红色;} /* 从外部设置暴露部分的样式 */ ...</desc> <question vote="0"> <p>Svelte <pre><code>slot</code></pre>的功能是否像 vanilla-js/dom 一样(我似乎无法让它工作)。</p> <p>在 html/js 中我可以做:</p> <p></p><div data-babel="false" data-lang="js" data-hide="false" data-console="true"> <div> <pre><code><style> body {color: red;} /* style exposed part from outside */ my-element::part(header) {color: green;} </style> <h1>Hello World</h1> <my-element> <div slot="header"><strong>Header</strong></div> <div slot="body">Body</div> </my-element> <script> customElements.define('my-element', class extends HTMLElement { constructor() { super(); const shadowRoot = this.attachShadow({mode: 'open'}); shadowRoot.innerHTML = ` <style> .container { border: solid 1px blue; padding: 5px; position: relative; &:after { content: "my-element"; display: block; position: absolute; bottom: -.5em; right: 5px; border: inherit; background-color: white; padding: inherit; } } /* style inserted/slotted part from inside */ [part="body"] ::slotted(div) { background-color: lightyellow; } </style> <div class="container"> <header part="header"><slot name="header"></slot></header> <hr> <div part="body"><slot name="body"></slot></div> </div> `; } }); </script></code></pre> </div> </div> <p></p> <p>其中 <pre><code>h1</code></pre> 的全局样式为红色,标有 <pre><code>part="header"</code></pre> 的元素从外部设置为绿色,插入 <pre><code>slot="body"</code></pre> 的内容从内部(shadow dom)设置为绿色有浅黄色背景。</p> <p>我不知道如何在 svelte 中执行任何这种(受控)跨界样式? (例如,当使用 <pre><code>AppShell::part(content)</code></pre> 时,我收到错误:</p> <pre><code>[plugin:vite-plugin-svelte] C:/srv/svelte/yoda5/src/routes/+layout.svelte:23:18 Expected a valid CSS identifier C:/srv/svelte/yoda5/src/routes/+layout.svelte:23:18 21 | 22 | <style> 23 | AppShell::part(content) { | ^ </code></pre> </question> <answer tick="false" vote="0"> <p>这里有关于<a href="https://learn.svelte.dev/tutorial/slots" rel="nofollow noreferrer">老虎机的课程</a>。最好参考该工具的文档。 Svelte 的学习网站非常棒。</p> <pre><code>// Slotted component, say Test.svelte. <div class="private-parent"> <slot /> </div> <style> div.private-parent { color: blue; } </style> </code></pre> <p>然后,您使用该组件:</p> <pre><code><script> import Test from './Test.svelte'; </script> <Test> <!-- This is the slot's content --> <p class="outside-style">Hello!</p> </Test> <style> p.outside-style { color: darkred; } </style> </code></pre> </answer> </body></html>