Closed guicaiyue closed 4 months ago
后缀改成 ts
后缀改成 ts
还是失败了
是哪个环节有问题?
@guicaiyue 你这不是最新镜像吧,node 版本不对
不需要改 package.json
好我再试试
@guicaiyue 你这不是最新镜像吧,node 版本不对
我用的是docker部署,然后通过面板更新
@guicaiyue 有备份目录的情况下,可以使用 docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -cR <容器名> 更新试试
@guicaiyue 有备份目录的情况下,可以使用 docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -cR <容器名> 更新试试
好的,我已经重新更新了一个新的版本,node版本为v20.12.1 node-fetch 模块脚本已经能正常运行使用了 步骤: 1、一个最新的青龙面板,初始化登录 2、依赖安装node-fetch模块 3、脚本管理新建一个atest.ts文件 4、将内容拷贝进去,点击调试,可以执行获取结果,未出现包依赖问题
但我现在遇到了另一个问题 我通过依赖管理安装 x-crawl 模块 新增 btest.ts 文件使用如下代码
import { createCrawl } from 'x-crawl'
const crawlApp = createCrawl({ intervalTime: { max: 3000, min: 1000 } })
crawlApp
.crawlHTML([
'https://www.example.com/html-1',
'https://www.example.com/html-2'
])
.then((res) => {
// 处理
console.log(res);
})
调试报错如下,说我使用了CJS模块导入,但我用的是 import ,还是因为这个依赖还引用了其他依赖的原因
测试发现,当我在脚本管理根目录下新增一份 package.json 文件内容如下
{
"name": "dependence",
"version": "1.0.0",
"author": "",
"type": "module",
"license": "ISC"
}
我的 btest.ts 文件就能执行成功,但同时原来执行 ok 的 atest.ts 文件执行失败,提示无法找到依赖模块报错内容如下
测试发现重点是 "type": "module" 配置,意思是启用 ESModule ,否则默认 CommonJS 当我将 "type": "module" 从 package.json 文件内容移除时,这时 atest.ts 能执行成功,btest.ts 不能执行成功,加上两者就反过来了。
解决了,一个 node 模块的导出方式决定它是CommonJS 还是 ESModule 。所以不是通过导入方式判断的,所以目录调整如下
外部 package.json 文件内容不带"type": "module",使用 CommonJS 模式加载,所以 atest.ts 能调试执行
{
"name": "dependence",
"version": "1.0.0",
"author": "",
"license": "ISC"
}
在 esm 文件目录下也新增 package.json 文件内容如下
{
"type": "module"
}
所以 node 使用 ESModule 模式加载 btest.ts 文件也能执行
暂未发现其他问题,此帖完结
解决了,一个 node 模块的导出方式决定它是CommonJS 还是 ESModule 。所以不是通过导入方式判断的,所以目录调整如下
外部 package.json 文件内容不带"type": "module",使用 CommonJS 模式加载,所以 atest.ts 能调试执行
{ "name": "dependence", "version": "1.0.0", "author": "", "license": "ISC" }
在 esm 文件目录下也新增 package.json 文件内容如下
{ "type": "module" }
所以 node 使用 ESModule 模式加载 btest.ts 文件也能执行
暂未发现其他问题,此帖完结
老哥, 你能在python中加载 canvas依赖吗?
解决了,一个 node 模块的导出方式决定它是CommonJS 还是 ESModule 。所以不是通过导入方式判断的,所以目录调整如下
外部 package.json 文件内容不带"type": "module",使用 CommonJS 模式加载,所以 atest.ts 能调试执行
{ "name": "dependence", "version": "1.0.0", "author": "", "license": "ISC" }
在 esm 文件目录下也新增 package.json 文件内容如下
{ "type": "module" }
所以 node 使用 ESModule 模式加载 btest.ts 文件也能执行 暂未发现其他问题,此帖完结
老哥, 你能在python中加载 canvas依赖吗?
还没用过,遇到什么问题了嘛?有例子嘛
解决了,一个 node 模块的导出方式决定它是CommonJS 还是 ESModule 。所以不是通过导入方式判断的,所以目录调整如下
外部 package.json 文件内容不带"type": "module",使用 CommonJS 模式加载,所以 atest.ts 能调试执行
{ "name": "dependence", "version": "1.0.0", "author": "", "license": "ISC" }
在 esm 文件目录下也新增 package.json 文件内容如下
{ "type": "module" }
所以 node 使用 ESModule 模式加载 btest.ts 文件也能执行 暂未发现其他问题,此帖完结
老哥, 你能在python中加载 canvas依赖吗?
还没用过,遇到什么问题了嘛?有例子嘛
大佬您试试在面板装依赖的python3页面装这个canvas依赖,试试能否成功, 不知道canvas这个依赖的历史版本哪里找.
Qinglong version
2.17.3
Steps to reproduce
node:internal/process/esm_loader:97 internalBinding('errors').triggerUncaughtException( ^
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'node-fetch' imported from /ql/data/scripts/atest1.swap.js Did you mean to import node-fetch@3.3.2/node_modules/node-fetch/src/index.js? at new NodeError (node:internal/errors:399:5) at packageResolve (node:internal/modules/esm/resolve:889:9) at moduleResolve (node:internal/modules/esm/resolve:938:20) at defaultResolve (node:internal/modules/esm/resolve:1153:11) 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 ModuleWrap. (node:internal/modules/esm/module_job:77:40)
at link (node:internal/modules/esm/module_job:76:36) {
code: 'ERR_MODULE_NOT_FOUND'
}
Node.js v18.16.1
执行结束... 耗时 1 秒
Any additional comments?
如果和正常项目脚本开发有差异,不管是nodejs还是python,都希望能有差一点文档,不然门槛太高了