await import
当使用await import的时候,如果是win系统,在使用绝对路径的时候,需要带上file://否则,就会报错并提示
Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file and data are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol 'd:'
at new NodeError (node:internal/errors:399:5)
at throwIfUnsupportedURLScheme (node:internal/modules/esm/resolve:1059:11)
at defaultResolve (node:internal/modules/esm/resolve:1135:3)
at nextResolve (node:internal/modules/esm/loader:163:28)
at ESMLoader.resolve (node:internal/modules/esm/loader:838:30)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
at ESMLoader.import (node:internal/modules/esm/loader:525:22)
at importModuleDynamically (node:internal/modules/esm/translators:110:35)
at importModuleDynamicallyCallback (node:internal/process/esm_loader:35:14)
at K (file:///D:/Global/node/pnpm-global/5/.pnpm/@winches+ghost@1.1.9_vue@3.2.47/node_modules/@winches/ghost/dist/bin.js:3:1533) {
code: 'ERR_UNSUPPORTED_ESM_URL_SCHEME'
}import 和 require 执行顺序问题
- import 是值的引用,require 是值的拷贝
- 可以在import前使用该变量,因为他会类似于变量提升一样先执行,require不可以
- 详情可看require和import的区别
node js 18以后由于 OpenSSL 加密,需要调整一下环境变量
报错信息:Error: error:0308010C:digital envelope routines::unsupported
您可以按照以下步骤执行此命令:
打开命令提示符或终端窗口。
输入以下命令并按 Enter 键执行:
set NODE_OPTIONS=–openssl-legacy-provider或者,如果您使用的是 macOS 或 Linux,可以使用以下命令:
export NODE_OPTIONS=–openssl-legacy-provider然后,您可以尝试重新运行您的应用程序,看看是否仍然会出现 digital envelope routines 的错误。
node-gyp 问题
if not defined npm_config_node_gyp
如果未定义 npm_config_node_gyp ,那么可能是没有正确安装或配置 node-gyp,这是一个 Node.js 包管理器,用于编译 C++ 扩展。要解决这个问题,需要先安装 node-gyp,可以使用 npm 安装:npm install -g node-gyp。然后需要确保系统中已经安装了所需的编译工具,如 Python2.7.10 和 Visual Studio C++桌面组件 2015(Windows 系统)或 GCC(Linux/macOS 系统)。
指定node-gyp地址
npm config set node_gyp "C:\Users\me\AppData\Roaming\npm\node_modules\node-gyp\bin\node-gyp.js"node-gyp 网络请求问题
gyp ERR! stack FetchError: request to https://nodejs.org/download/...headers.tar.gz failed
解决办法:
1、外网安装后拖到本地
issues: https://github.com/nodejs/help/issues/3686
cd /tmp && wget https://nodejs.org/download/release/v16.13.2/node-v16.13.2-headers.tar.gz
npm config set tarball /tmp/node-v16.13.2-headers.tar.gz
npm ci注意:
npm config set tarball若出现is not a valid npm option可能是npm版本过高比如npm9+,降级后正常
2、设置镜像源
1、package.json里添加scripts
{
"scripts": {
"ni": "node-gyp configure --disturl=custom_url && pnpm i"
}
}2、在npm命令行使用
// 你的package.json scripts字段
"build": "node-gyp configure"
// 然后在命令行调用
npm run build --disturl=xxx情况1下,disturl是作为node-gyp的参数进行解析,能够被设置到opts中。 情况2,disturl是作为npm的参数被加入到npm环境变量:npm_config_disturl,此时,node-gyp解析p的时候,也能解析到disturl进而设置到opts。
Error: Could not find any Visual Studio installation to use
【VS离线安装】Visual Studio2022社区版从已安装的联网计算机迁移至未联网的计算机上
解决方案:
方案1:
根据报错提示安装visual studio 2015, 并引入相关的c++桌面开发
方案 2:
可以试下全局安装构建工具
npm install --global windows-build-toolsTips
相关依赖是否需要python环境? 需要可安装2.7.x版本
缺少binding_node模块
进入对应缺少模块的依赖中运行
node-gyp rebuild找不到fetch
需要nodejs 18+以上版本,若报类型错误,则添加tsconfig.json,lib: ['dom']
如何获取终端的上下文信息
在PoswerShell中,PowerShell的历史记录通常存储在以下位置:
%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
这里会实时记录着终端的上下文指令,可以通过fs.readFileSync指令去获取
tsx 断点失败,出现断点进编译后的可读文件中
nodejs 20+ 问题导致的,降级到 nodejs 18后解决
通过 nodejs 打开编辑器跳转到源文件
// 浏览器端发送一个请求,nodejs端监听该请求
fetch(`/__open-in-editor?file=${src}`).then(
() => console.log(`%c🚀 ~ launch ~ file: ${src}`, 'color: cyan'),
() => console.error(`Unable to open: ${src}`),
)
Awesome 15docs