用于JavaScript的标准模块系统,在ECMAScript 6(2015)中引入。
我正在使用以下脚本将字符串编译为模块。如何为此模块指定上下文,以便 myGlobal 在代码中可用? const myGlobal = "你好"; 功能
我一直在尝试运行我的index.mjs 文件,但总是遇到同样的错误。这是我的 index.mjs 文件: 从“ws”导入WebSocket,{WebSocketServer}; 从“http&qu...
ES6(ECMAScript 2015)模块:导入index.js
在互联网上查找时,我对特殊的“index.js”模块文件感到困惑。 使用 babelJS + Node.js 或 Browserify/Webpack 我可以在“libs...
我正在将 Express 应用程序从 CommonJS require 语法移至 ES6 模块导入语法。这很好,直到我尝试使用 dotenv 加载我的环境变量以及每次我尝试访问时
节点模块 .d.ts 下的文件的 Jest 测试失败,即使忽略节点模块也无法解析
我在进行笑话测试时遇到以下错误。我已经对错误发布到的节点模块进行了转换忽略。请检查配置并帮助我编译我的
nestjs-无法使用 migrate-mongo 进行迁移
我正在开发一个nestjs应用程序,我正在使用migrate-mongo包,我已经使用migrate-mongo命令初始化了 npx 迁移-mongo -m esm init 然后我必须添加“类型”:“...
是否有 vue devtools 作为 ES 模块,或者是否有没有依赖项的 pinia prod ES 模块?
我尝试使用pinia 2.1.7作为ES模块,以及Vue 3.3.8。 所以: <p>我尝试使用pinia 2.1.7作为ES模块,以及Vue 3.3.8。</p> <p>所以:</p> <pre><code><script type="module" src="./js/lib/vue-3.3.8.esm-browser.js"></script> <script type="module" src="./js/lib/pinia-2.1.7.esm-browser.js"></script> </code></pre> <p>和:</p> <pre><code>import {defineComponent, createApp, nextTick} from "./lib/vue-3.3.8.esm-browser.js"; import {createPinia, setActivePinia} from "./lib/pinia-2.1.7.esm-browser.js" </code></pre> <p>和:</p> <pre><code>... const pinia = createPinia(); setActivePinia(pinia); const cntApp = createApp(App); cntApp.use(pinia); cntApp.mount('.vue-app'); ... </code></pre> <p>到目前为止我很清楚。</p> <p>我从pinia ES模块了解到它需要vue-demi和vue/devtools-api。因此,我另外导入 vue-demi 作为 ES 模块,该模块是从 npm dist 文件夹中获取的,但是<strong>我没有找到 devtools 的 ES 模块</strong>。</p> <p>我在 CMS 中开发,仍然最好用单页面交付,所以我更喜欢尽可能长时间地使用 ES 导入每个页面,而不是构建一个巨大的 js 包。</p> <p>问题:</p> <ul> <li>是否有没有 vue-demi 且没有 api 工具的 pinia 生产版本?</li> <li>是否有可能将 devtools 作为 ES 模块或脚本包含在内?</li> </ul> </question> <answer tick="false" vote="0"> <p>因此,如果您在节点宇宙中并使用 npm、webpack 或其他,您的脚本将使用所需的一切来构建。</p> <p>但是如果你需要在浏览器中加载单个ES模块,你就必须选择和调整。我使用 Vue3 和 Pinia,需要在浏览器中使用 ES。</p> <p>我建议采取以下步骤:</p> <ol> <li><p>按照记录使用 npm 下载所需的模块,例如<pre><code>npm install pinia</code></pre>、<pre><code>npm install vue-demi</code></pre>、<pre><code>npm install vue/devtools-api</code></pre>(如果需要)。您仍然可以创建一个虚拟的 npm lib 文件夹并在那里运行 npm,只是为了获取所有包。</p> </li> <li><p>复制项目中所需的文件并将它们作为模块加载到浏览器中。例如,我现在有:</p> <pre><code> <script type="module" src="./js/lib/vue-3.3.8.esm-browser.js"></script <script type="module" src="./js/lib/vue-devtools-6.5.1.esm/index.js"></script> <script type="module" src="./js/lib/vue-demi-0.4.16.esm.js"></script> <script type="module" src="./js/lib/pinia-2.1.7.esm-browser.js"></script> </code></pre> </li> </ol> <p>您可以在包的子文件夹“dist”或“lib”或其他子文件夹中找到这些文件。除了 vue demi,接下来会解释。</p> <ol start="3"> <li><p>Vue demi 是一个简单的脚本,基本上可以从 Vue 导入和导出所有内容,并向界面添加 <pre><code>set()</code></pre> 和 <pre><code>del()</code></pre>,并进行一些进一步的更改以兼容 Vue3。它在包根目录中的索引文件需要包管理器才能运行。但是,在我的例子中,我只使用 Vue3,所以我抓住 <pre><code>/lib/v3/index.mjs</code></pre>,更改 <pre><code>import</code></pre> 语句,以便 <pre><code>from</code></pre> 语句找到有效文件,并将其存储为 vue-demi-0.4.16.esm.js 。现在这就是你自己的 ES 模块了。</p> </li> <li><p>由于所有这些文件都是为包管理器准备的,因此您需要调整导入语句的<pre><code>from</code></pre>部分。浏览器必须找到正确引用的文件。见下一篇。</p> </li> </ol> <p>如果你阅读pinia.xx.esm-browser.js,开头的许多导入名称除了<pre><code>set</code></pre>和<pre><code>del</code></pre>之外都是来自Vue.js。只有 <pre><code>set</code></pre> 和 <pre><code>del</code></pre> 来自 vue-demi。所以你不需要找到“巨大的 vue-demi 脚本”,vue-demi 只是转发来自 Vue 的所有导入。</p> <p>所以我的 pinia-2.1.7.esm-browser.js 现在有:</p> <pre><code>//import { hasInjectionContext, inject, toRaw, watch, unref, markRaw, effectScope, ref, isVue2, isRef, isReactive, set, getCurrentScope, onScopeDispose, getCurrentInstance, reactive, toRef, del, nextTick, computed, toRefs } from 'vue-demi'; import { hasInjectionContext, inject, toRaw, watch, unref, markRaw, effectScope, ref, isVue2, isRef, isReactive, set, getCurrentScope, onScopeDispose, getCurrentInstance, reactive, toRef, del, nextTick, computed, toRefs } from "./vue-demi-0.4.16.esm.js"; //import { setupDevtoolsPlugin } from '@vue/devtools-api'; import { setupDevtoolsPlugin } from "./vue-devtools-6.5.1.esm/index.js"; </code></pre> <p>vue-demi-0.4.16.esm.js 看起来像这样:</p> <pre><code>import * as Vue from "./vue-3.3.8.esm-browser.js"; var isVue2 = false var isVue3 = true var Vue2 = undefined ... Everything else is unchanged ... export * from "./vue-3.3.8.esm-browser.js"; export { Vue, Vue2, isVue2, isVue3, install, } </code></pre> <p>一切都在那里,只需抓住它并将其调整为导出报表即可。</p> <p>您将找到更好的方法来灵活地处理导入声明、发布和更新。我想说的是:所有模块都在那里,抓住它们即可。</p> </answer> </body></html>
任何人都可以告诉我这两个版本之间的区别,并告诉我它们之间发生的任何折旧,新模块,新概念。对 JavaScript 网站的任何影响或创建一个过度的错误...
编程式 Webpack 和 Jest (ESM):无法解析没有“.js”文件扩展名的模块
我正在以编程方式使用 webpack,以及 typescript、ESM 和 jest。在一个玩笑测试中,我在导入 ES 模块时因不包含 .js 文件扩展名而收到错误。例如: 模块不适合...
是否可以获取当前JavaScript模块的文件名? // 项目.mjs 函数 printName() { 控制台.log(...); // >> item 或 item.mjs }; 如果没有,为什么不呢?沙箱等
我们的库需要同时适用于使用 ESM 模块和 CommonJS 的项目。因此,我们使用 3 种不同的配置构建它:ESM、node16 和类型。 此设置适用于 JavaScript 项目...
我们如何从express导入Request、Response、Express接口 从'express'导入express,{Express,请求,响应}; 检查了类型声明文件,我们只导出 fu...
尝试在 Nuxt 2 项目中导入 @thirdweb-dev/wallets 模块时出现以下错误: ./node_modules/@thirdweb-dev/sdk/dist/marketplace-auction-3488e43b.browser.esm.js 中出现错误
如何用玩笑测试@mdx-js/mdx(transformIgnorePatterns不适用于“开发”模块)
我的最终目标是能够在 Jest 中编写可以从 @mdx-js/mdx 导入的测试,这是一个 ESM 模块,并且由于正在开发的库包是为 commonsjs 配置的,所以我使用...
connect-redis 7.0.1 出现错误 [ERR_REQUIRE_ESM]
节点版本:16.20.2 连接redis版本:7.0.1 ESM版本:3.2.25 Redis版本:3.0.2 快速会话版本:1.17.3 我的节点应用程序中的 connect-redis 收到 ERR_REQUIRE_ESM 错误。我有
我有一个基本的 Express 服务器,我用 Jest 和 Supertest 进行测试。我正在尝试模拟由控制器导入的 ES 模块。测试工作正常,但我无法使模拟工作。这里...
Javascript 导入模块并在 HTML 文档中使用它们
我一直遇到的问题是我无法让导入的模块在普通的 Javascript 中一起工作。这是我的项目结构: > 顶层 > 索引.html > 主.css > main.js &g...
无法在 vite vue ts 三个项目中使用三个对象运行玩笑测试
这是我的测试: 从“../src/modules/objs/line”导入{Line}; 从“../src/modules/scene/sceneWrapper”导入{SceneWrapper}; 从“三”导入*作为三; 导入{
我目前正在使用 webpack 将 javascript 文件与 React 捆绑在一起。该文件还有另一个导入语句到我的项目中的另一个模块 从 './MyModuleFile.js' 导入 {MyModule} ...
如何在工作线程中使用ES6导入? 我正在尝试在 Node.js 环境中的工作线程中使用 ES6 导入语法。但是,我遇到了导入声明的问题。这是一个