2.x的npm包在3.x无法使用

class-transformer和class-validator在2.4.6下无法运行…
遂新建3.3项目测试是否可以运行,可是一些在2.4下可以正常运行的包也不能在3.0下使用(mobx)
这是2.4时已经在生产环境下使用过的包
这里有人遇到同样问题,例子见:npm的lodash 包 怎么用?

如下的代码运行时都会报错 index.js:1 ReferenceError: process is not defined

import {observable} from 'mobx'
import mobx from 'mobx'
const {observable} = mobx
import * as mobx from 'mobx'
const {observable} = mobx

麻烦官方大大看一下呀,这个包还很常用的

这刚需啊 大佬们求关注


照着这个弄好了

import { observable } from 'mobx/dist/mobx.cjs.production.min.js'
// xxx.d.ts
declare module 'mobx/dist/mobx.cjs.production.min.js' {
	export * from 'mobx'
}

都强制ts了,我觉得这用法没道理哇…

npm install --save @types/node
试一下?

不是这个问题

不可思议,你试着运行时可以?按理说应该这样:

import mobx from 'mobx/dist/mobx.cjs.production.min.js'
const { observable } = mobx;

我看了下哦,这个库是提供了 ESM 版本的,ESM 版本才支持 import { .... } from 这样。所以你可以试下:

import { observable } from 'mobx/dist/mobx.esm.js'; // 或者相应的 mobx.esm.production.min.js

可以,不晓得为什么。大概tsc编译过了?自动转成require语法了

:joy: 不可思议,运行时按理来说不行的

对 mbox 的使用我们现在收录到 “Can I Use npm … in Cocos Creator”了:https://cutt.ly/CQZuV4q

浏览器调试没问题,原生还没有试。
可是为什么直接从入口引入不行呢?就像vue或react脚手架那样。
我没了解过ccc怎么编译打包,但是我觉得这样虽然可以但不是很自动化

原因我在 求creator 3.0 npm 引入 web3的方法 - Creator 3.0 - Cocos中文社区 里面已经说过了,简而言之:

  • 这个包的默认入口使用了 Node 内置库,Creator 没有内置库。

  • 我们没用特定的打包工具。

npm 包有的能用,有的不能用。。。。这就很蛋疼。

更好的方案是 Cocos 自己弄一套 ccpm 的扩展中心之类的嘛。。。

可以弄,但是问题是,现有的npm库作者,愿意去提交嘛

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。