unjs / consola Goto Github PK
View Code? Open in Web Editor NEW🐨 Elegant Console Logger for Node.js and Browser
License: Other
🐨 Elegant Console Logger for Node.js and Browser
License: Other
Reproduction link : https://repl.it/@gkatsans/Consola#index.js
The consola contrib repository doesnt seem to have a lot of activity in the issue tracker hence my posting here.
Reported in nuxt/nuxt#8712
Previous versions of consola exported all the internals which I used to create my own Consola instance in nuxt-generate-cluster: https://github.com/nuxt-community/nuxt-generate-cluster/blob/master/lib/utils/consola.js
Currently it seems the only export that is distributed is the consola instance. Which also means that the README is probably not correct. Eg when I log consola.JSONReporter
it logs undefined
(referring to this: https://github.com/nuxt/consola#creating-a-new-instance)
I'd also be happy with a third build file, eg so I have to import eg consola/dist/Consola
to get access to all the exports in https://github.com/nuxt/consola/blob/master/src/index.js
Not sure what the best name for such an export would be
Hi, I am very new to consola
. Is there a way to display the method name from where the console.info
gets called?
withTag
withDefaults
and create
(Keep for legacy but create a new class instance`<type>(logOjb)
from <type>(args
. (How?)how to solve this problem
ERROR in D:/web/test-nuxt-ts/node_modules/consola/types/consola.d.ts
ERROR in D:/web/test-nuxt-ts/node_modules/consola/types/consola.d.ts(98,1):
98:1 An export assignment cannot be used in a module with other exported elements.
96 | export default consolaGlobalInstance
97 |
98 | export = consolaGlobalInstance
| ^
99 |
FATAL Nuxt build error
Using using wrap*
helpers, we implicitly assume first argument as consola logObj format which might end with formatting errors. (nuxt/nuxt#8741)
const consola = require('consola')
const error = new Error('boom')
const errorObj = {
date: new Date().toISOString(),
level: 'error',
message: error.message,
error: { stack: error.stack, message: error.message }
}
console.log(errorObj)
consola.wrapAll()
console.log(errorObj)
console.log(JSON.stringify(errorObj, null, 2))
console.log('', errorObj)
consola.restoreAll()
https://github.com/nuxt/consola/issues/new
https://cmty.app/nuxt/issues/new?type=bug-report&repo=consola
I hope this does not get deleted automatically, but https://nuxtjs.cmty.io/issues/new does not work!
Reproduction:
CodeSandbox: https://codesandbox.io/s/y0yxr7923j (unfortunately I can't get the CodeSandbox to run again after changing the nuxt.config.js
and restarting. Please download the CodeSandbox and run locally to reproduce. Thx!)
nuxt.config.js
in CodeSandbox)npm run generate
global-prefix
use try
/ catch
without logging the error).I've hunted down the error to the global-prefix
package to the following lines: https://github.com/jonschlinkert/global-prefix/blob/master/index.js#L65
Add a console.error(err)
in the catch
section to see the Maximum call stack size exceeded
error in node_modules/consola/dist/consola.js
. Remove the try
/ catch
block and just return null
everything works fine.
Everything worked fine before Nuxt 2.5 so I assume something has changed with this package with the 2.5 release?
Thanks for the great work on Nuxt.js - I'm a big fan!
(@gkatsanos via 7ed640f#commitcomment-46574499)
I passed
consola.setReporters([ new consola.FancyReporter({ compact: false }) ])
and I still see
data: {
content: [
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object]
],
in the 3+ levels of nesting. Am I doing something wrong there?
I have an object to log.
I do this:
console.log(professionnalInfos);
logger.info(professionnalInfos);
logger.info(JSON.stringify(professionnalInfos));
Result:
{ siren: '1111111', phone: '0511111111' }
ℹ info undefined
ℹ info {"siren":"1111111","phone":"0511111111"}
I think undefined
is counter intuitive. No ?
https://nuxt-auth.herokuapp.com/
The following code logs undefined:
return this.$auth.loginWith('local', {
data: {
username: this.username,
password: this.password
}
}).then(response => {
console.log(response);
}
Getting the full response
Response is undefined
EDIT: This is for the AUTH project, not consola. Is it possible to move this? I have not found out how.
https://codesandbox.io/s/r4kk7o5jl4?module=%2Fsrc%2Findex.ts&view=editor
Consola types support logging with "any".
Consola only supports the string type.
https://electronjs.org/docs
nuxt-issues
Error when using nuxt in electron SyntaxError: Unexpected token ...
Looking to replace nuxt with 72 lines {...this.options.render.csp.policies} instead of using...
Error when using nuxt in electron SyntaxError: Unexpected token ...
https://codesandbox.io/s/14ljokmml4
CodeSandbox: https://codesandbox.io/s/14ljokmml4 (unfortunately I can't get the CodeSandbox to run again after changing the nuxt.config.js
and restarting. Please download the CodeSandbox and run locally to reproduce. Thx!)
nuxt.config.js
in CodeSandbox)npm run generate
nuxt generate should do its job
100% CPU and nothing else seems to happen (because the developers of global-prefix
use try
/ catch
without logging the error).
I've hunted down the error to the global-prefix
package to the following lines: https://github.com/jonschlinkert/global-prefix/blob/master/index.js#L65
Add a console.error(err)
in the catch
section to see the Maximum call stack size exceeded
error in node_modules/consola/dist/consola.js
. Remove the try
/ catch
block and just return null
everything works fine.
Everything worked fine before Nuxt 2.5 so I assume something has changed with this package with the 2.5 release?
Thanks for the great work on Nuxt.js - I'm a big fan!
I m quite confused : sometimes it works and other it does not ! i guess it depends on context (import or require)
import consola from 'consola'
const logger = consola.withScope('scope') // is Ok
const newlogger = console.withScope('other') // is not Ok (withScope is not a function)
But it worked in some other situations i coded
I guess it comes from /node-modules/consola/dist/console.cjs.js
I have the feeling prototypes are missing in the new consola created by withScope/withDefaults: logger is just an object and no longer a Consola.
var Consola =
/*#__PURE__*/
function () {
function Consola() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, Consola);
this.reporters = options.reporters || [];
this.types = Object.assign({}, types, options.types);
this.level = options.level != null ? options.level : 3;
Object.assign(this, this.withDefaults());
}
_createClass(Consola, [{
key: "withDefaults",
value: function withDefaults(defaults) {
var logger = {};
for (var type in this.types) {
logger[type] = this._createLogFn(Object.assign({
type: type
}, this.types[type], defaults));
}
return logger;
}
}
Note: nuxtjs.cmty.io does not exist
Your compiler is turning consoleLogFn(...args)
into consoleLogFn.apply(void 0, args)
, which is invalid in older browsers: https://stackoverflow.com/a/8159338/2074736
https://github.com/nuxt/nuxt.js/tree/dev/examples/typescript
run fresh example
no errors
Vue is not defined
error likely due to a ssr issue, which might cause problems in production
I believe there's no examples of addReporter in the docs, and in general the logging mechanism could be explained a little more.
I created a consola Nuxt plugin, set the reporter to be FancyReporter
, and then went on to use $consola.debug in my code. All worked as expected. Later, I set some $consola.error()
s and the output was plaintext. I had to explicitely set the Reporter to JSONReporter above the $consola.error()
calls to get them to log JSON.
It is sometimes required to have a more fine grain control over log level per reporter.
For instance, let's say we want the stdout reporter to only show info log lever, but at the same time write trace log level to a file using the json reporter.
https://jsfiddle.net/Jupp/adnsv7ef/3/
The background file set in the css is searched at 'http://localhost:3333/static/any.jpg', when it should be searched at 'http://localhost:3333/_nuxt/img/any.jpg'
That point correctly to the files set in css classes.
I think they are looking for the wrong place.
import { Consola, FancyReporter } from 'consola';
will produce an error as there is no exported member FancyReporter
to have proper detentions for the entire library
typescript error
The repeated X times
is only triggered with a trailing consola call. If you dont have a trailing consola call the spam message doesnt get printed.
See https://jsfiddle.net/6pvqxy1k/1/ for an example, without the END call the (repeated 4 times)
message will never be printed
[No link needed](No link needed)
Create a file test.js and add following line:
var consola = require('consola');
No errors when running on node 6.10.3
(function (exports, require, module, __filename, __dirname) { "use strict";function _interopDefault(u){return u&&"object"==typeof u&&"default"in u?u.default:u}var util=_int
eropDefault(require("util")),path=require("path"),fs=require("fs"),os=_interopDefault(require("os")),commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=t
ypeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function createCommonjsModule(u,e){return u(e={exports:{}},e.exports),e.exports}funct
ion getCjsExportFromNamespace(u){return u&&u.default||u}var vendors=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Bamboo",c
onstant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITR
ISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDD
SyntaxError: Unexpected token ...
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:542:28)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (C:\Users\Default\Desktop\test.js:1:77)
https://jsfiddle.net/hqqxxf/edLsh8sL/
in router '/a', it has a link to '/b', when I returned in '/b', The page returned to the home page('/') , and I found not the static resources request when returned.
returned to the last page(router '/a')
returned to the home page(router '/' or 404)
[http://not-available.com/Always broken on webview android 6.0.0](http://not-available.com/Always broken on webview android 6.0.0)
Using android emulator with version 6.0.0
Having any consola.log will result in Uncaught TypeError: Illegal invocation due to https://stackoverflow.com/questions/8159233/typeerror-illegal-invocation-on-console-log-apply/8159338#8159338
The related snippet in consola/dist/consola.browser.js is
return r(t, [{
key: "log",
value: function(e) {
var t = e.level < 1 ? console.__error || console.error : 1 === e.level && console.warn ? console.__warn || console.warn : console.__log || console.log
, r = "log" !== e.type ? e.type : ""
, s = e.tag ? e.tag : ""
, n = this.typeColorMap[e.type] || this.levelColorMap[e.level] || this.defaultColor
, i = "\n background: ".concat(n, ";\n border-radius: 0.5em;\n color: white;\n font-weight: bold;\n padding: 2px 0.5em;\n ");
t.apply(void 0, ["%c" + [s, r].filter(Boolean).join(":"), i].concat(o(e.args)))
}
}]),
Not throwing any exception in old browser
Throwing Uncaught TypeError: Illegal invocation
Replace void 0
with console
will resolve this for my case
ERROR ERROR in ./node_modules/consola/types/consola.d.ts(98,1): nuxt:typescript 11:30:28
98:1 An export assignment cannot be used in a module with other exported elements.
96 | export default consolaGlobalInstance
97 |
> 98 | export = consolaGlobalInstance
| ^
99 |
ℹ Version: typescript 3.7.4 nuxt:typescript 11:30:28
ℹ Time: 15081ms nuxt:typescript 11:30:28
ℹ Waiting for file changes 11:30:28
ℹ Memory usage: 638 MB (RSS: 1.23 GB)
https://codesandbox.io/embed/fervent-pine-su2ty
Hi folks,
Consola is not handling the native string substitutions of console.
https://developer.mozilla.org/en-US/docs/Web/API/console#Using_string_substitutions
This leads to issues when when using wrapConsole
method in code bases where you don't control logs.
Example: there is a problem with all the react errors.
Here an example before/after the wrap:
- Warning: Received `true` for a non-boolean attribute `secondary`.
+ Warning: Received `%s` for a non-boolean attribute `%s`.
- If you want to write it to the DOM, pass a string instead: secondary="true" or secondary={value.toString()}.
+ If you want to write it to the DOM, pass a string instead: %s="%s" or %s={value.toString()}.%s true secondary secondary true secondary
in h1 (created by App)
in div (created by App)
in App
For me, consola should have the same api than console, to be able to replace it properly.
How can we handle that?
Thanks for your work,
Matt'.
Consola should have at least the same api and features than console.
Features from console are missing in consola (browser and node).
The current logic of deciding if log level is enabled is by checking that the desired log level is lower than the set log level.
https://github.com/nuxt-contrib/consola/blob/28a61980aecbb41837b1dc81f87d6f6e76f7dcde/src/consola.js#L224
If we use infinity as the silent value, that will effectively cause all log levels to log.
We need to set silent log level to be -infinity
ERROR in ./node_modules/consola/types/consola.d.ts(98,1): nuxt:typescript 11:30:28
96 | export default consolaGlobalInstance
97 |
> 98 | export = consolaGlobalInstance
| ^
99 |
ℹ Version: typescript 3.7.4 nuxt:typescript 11:30:28
ℹ Time: 15081ms nuxt:typescript 11:30:28
ℹ Waiting for file changes 11:30:28
ℹ Memory usage: 638 MB (RSS: 1.23 GB)
https://codesandbox.io/s/vj522nv827
wrapAll
The log is enhanced
import consola from 'consola'
const logger = consola.create({
// level: 4,
reporters: [
new consola.JSONReporter()
],
defaults: {
additionalColor: 'white'
}
})
Error TS2339 (TS) Property 'JSONReporter' does not exist on type 'Consola'.
Error TS2322 (TS) Type '{ additionalColor: string; }' is not assignable to type 'ConsolaLogObject'.
Object literal may only specify known properties, and 'additionalColor' does not exist in type 'ConsolaLogObject'.
i'm using code in document, but it have error. i don't nkow how to fix it. pls help me, thanks you very much.
In #94 I added/fixed the typings of the package.
As part of the process I added the LogLevel enum, which I exported in index.js.
When I tried to use the library, I realized that the npm package actually exports the the dist file, which is a minified version of node.js which doesn't export the new enum.
Also, it seems redundant to publish the src files if you expose a minified version.
@pi0 @Atinux I will prepare a quick fix not. Can you please give your opinion on the packaging of the src dir in the published package?
https://jsfiddle.net/boilerplate/vue
Hello.
I have installed consola in my project and when I click on a nuxt-link who must display a log via Middleware I have an error : consola.info is not a function
If I refresh the page with my browser the log works well.
PS : an other project with nuxt 2.5.0 and consola 2.5.7 was working well
const consola = require('consola')
export default function (context) {
consola.info('--> Info | request ' + context.route.fullPath + ' launched')
}
export default {
...
router: {
// Run the middleware/log-router.js on every page
middleware: 'log-router'
}
}
Log a message
Blank page with error.
Page :
consola.info is not a function
An error occurred while rendering the page. Check developer tools console for details.
Console :
vendors.app.js:11254 error TypeError: consola.info is not a function
at app.js:3989
at promisify (app.js:3422)
at middlewareSeries (app.js:3401)
at Vue.callMiddleware (app.js:943)
at Vue._callee4$ (app.js:1069)
at tryCatch (commons.app.js:6116)
at Generator.invoke [as _invoke] (commons.app.js:6342)
at Generator.prototype. [as next] (commons.app.js:6168)
at asyncGeneratorStep (commons.app.js:31)
at _next (commons.app.js:53)
log @ vendors.app.js:11254
log @ vendors.app.js:11166
logFn @ vendors.app.js:11160
logFn @ vendors.app.js:11084
push../.nuxt/client.js.vue__WEBPACK_IMPORTED_MODULE_18.default.config.errorHandler @ app.js:680
globalHandleError @ app.js:3101
_callee4$ @ app.js:1319
tryCatch @ commons.app.js:6116
invoke @ commons.app.js:6342
prototype. @ commons.app.js:6168
asyncGeneratorStep @ commons.app.js:31
_next @ commons.app.js:53
Promise.then (async)
asyncGeneratorStep @ commons.app.js:41
_next @ commons.app.js:53
(anonymous) @ commons.app.js:60
(anonymous) @ commons.app.js:49
_render @ app.js:1342
render @ app.js:947
iterator @ commons.app.js:10678
step @ commons.app.js:10452
(anonymous) @ commons.app.js:10453
(anonymous) @ commons.app.js:10699
_callee3$ @ app.js:805
tryCatch @ commons.app.js:6116
invoke @ commons.app.js:6342
prototype. @ commons.app.js:6168
asyncGeneratorStep @ commons.app.js:31
_next @ commons.app.js:53
(anonymous) @ commons.app.js:60
(anonymous) @ commons.app.js:49
_loadAsyncComponents @ app.js:842
loadAsyncComponents @ app.js:736
iterator @ commons.app.js:10678
step @ commons.app.js:10452
step @ commons.app.js:10456
runQueue @ commons.app.js:10460
confirmTransition @ commons.app.js:10707
transitionTo @ commons.app.js:10609
push @ commons.app.js:10919
push @ commons.app.js:11300
handler @ commons.app.js:9174
invokeWithErrorHandling @ commons.app.js:13255
invoker @ commons.app.js:13580
original._wrapper @ commons.app.js:18303
Show 14 more frames
Version
2.9.0
Steps to reproduce
Create a file test.js and add following line:
var consola = require('consola');
What is expected ?
No errors when running on node 6.10.3
What is actually happening?
(function (exports, require, module, __filename, __dirname) { "use strict";function _interopDefault(u){return u&&"object"==typeof u&&"default"in u?u.default:u}var util=_int
eropDefault(require("util")),path=require("path"),fs=require("fs"),os=_interopDefault(require("os")),commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=t
ypeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function createCommonjsModule(u,e){return u(e={exports:{}},e.exports),e.exports}funct
ion getCjsExportFromNamespace(u){return u&&u.default||u}var vendors=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Bamboo",c
onstant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITR
ISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDD
SyntaxError: Unexpected token ...
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:542:28)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (C:\Users\Default\Desktop\test.js:1:77)
Ref: #80
Fix a typing issue that causes this to throw a typing error on
consola.green
:
// @ts-check
const consola = require('consola')
consola.green('foo')
Workaround:
// globals.d.ts
import { Consola } from 'consola'
declare module 'consola' {
export = new Consola()
}
running yarn run dev
produces this error
× fatal ...\nuxt\node_modules\@nuxtjs\axios\lib\module.js:1
TypeError: consola.withScope is not a function
at Object.<anonymous> (...\nuxt\node_modules\@nuxtjs\axios\lib\module.js:4:24)
at Object.Module._extensions..js (module.js:671:10)
at Object.Module._extensions..js (module.js:671:10)
at Object.requireModule (...\nuxt\node_modules\nuxt-edge\dist\nuxt.js:1254:18)
at Nuxt.requireModule (...\nuxt\node_modules\nuxt-edge\dist\nuxt.js:10262:21)
https://codepen.io/timyaodpc/pen/bMyazm
Use it in Nuxt/plugins/myplugin.js.
It all works but in browser console it give me a error says "process is not defined"
. Error points to "ci-info"
module first line which tries to use process.env
.
I can see ci-info is a dependency of consola as below:
└─┬ [email protected]
└─┬ [email protected]
└─┬ [email protected]
└── [email protected]
I now have to add isServer
condition on const consola = require('consola')
. Otherwise it breaks the client side.
Browser should no error in console.
A error from ci-info
says "process is not defined".
index.js:3 Uncaught ReferenceError: process is not defined
at Object../node_modules/ci-info/index.js (index.js:3)
at webpack_require (bootstrap 20212f6dd5b287d60bc9:712)
at fn (bootstrap 20212f6dd5b287d60bc9:117)
at Object../node_modules/is-ci/index.js (index.js:3)
at webpack_require (bootstrap 20212f6dd5b287d60bc9:712)
at fn (bootstrap 20212f6dd5b287d60bc9:117)
at Object. (index.js:1)
at Object../node_modules/std-env/index.js (index.js:18)
at webpack_require (bootstrap 20212f6dd5b287d60bc9:712)
at fn (bootstrap 20212f6dd5b287d60bc9:117)
Is Consola
can only be used in server side js?
The consola code index.js first line imported std-env
which can only used in server side.
https://github.com/nuxt/consola/blob/master/src/index.js#L1
Not sure which is the best way to use it in Nuxt and maybe it's a bug?
https://codesandbox.io/s/gracious-mendel-uw0vh
Functions like setTimeout and clearTimeout are not defined on https://developer.mozilla.org/en-US/docs/Web/API/AudioWorkletGlobalScope
Logging with consola uses these functions in order to throttle logging. It should be possible to disable the throttling or have consola disable throttling if these functions are not available.
Creating a worklet.js file with the following code:
console.log({setTimeout: typeof setTimeout, clearTimeout: typeof clearTimeout})
And another file, index.js with the following:
new AudioContext().audioWorklet.addModule("/worklet.js")
Outputs
{setTimeout: "undefined", clearTimeout: "undefined"}
Consola to log without a crash
Consola code crashes
https://repl.it/repls/RealDarkredOolanguage
Create deeply (4 levels) nested object and try to log it.
Whole object gets logged in the console.
Object is collapsed and part of it becomes simply [Object] hiding important info.
This could be a configurable behaviour but I strongly belive that by default everything should be visible.
Version
2.9.0
Steps to reproduce
Create test.js and add:
var consola = require('consola');
What is expected ?
No errors when running node 6.10.3
What is actually happening?
(function (exports, require, module, __filename, __dirname) { "use strict";function _interopDefault(u){return u&&"object"==typeof u&&"default"in u?u.default:u}var util=_int
eropDefault(require("util")),path=require("path"),fs=require("fs"),os=_interopDefault(require("os")),commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=t
ypeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function createCommonjsModule(u,e){return u(e={exports:{}},e.exports),e.exports}funct
ion getCjsExportFromNamespace(u){return u&&u.default||u}var vendors=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Bamboo",c
onstant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITR
ISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDD
SyntaxError: Unexpected token ...
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:542:28)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (C:\Users\Default\Desktop\test.js:1:77)
https://jsfiddle.net/6hj9wd35/
Run a project with latest version
Remove incorrect export, line 98
5c22d8c
An export assignment cannot be used in a module with other exported elements.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.