Meteor 3.0-beta.7 is out!

We have a new release: meteor 3.0.0-beta.7

  • New Meteor Installer

npm installer now works in every env (windows is included): npx meteor@beta; Because of how npm works now, we needed to update it to use npx; note that using npm i -g meteor@beta; it is still possible, but you need to pass the --foreground-script flag. The command for using npm became:

npm i -g meteor@beta --foreground-script 

If you already have the npm package and want to use the npx option, you might need to use npx clear-npx-cache and ensure you are using node v20 or higher.

  • React skeleton works appropriately and out of the box;

The react-meteor-data issue is now solved.

  • observeAsync was introduced - PR;

It adds a possibility to have isomorphic observe for more context. You can check this issue.

Bug fixes:

Known issues

The new npx installer for some users gives an error:

you are not using global npm context to install...

Make sure that you are using node v20.

If you got this error, please report it to us, your feedback is essential.

How to test it?

Existing projects:

meteor update --release 3.0-beta.7

Starting a project:

meteor create app-name --release 3.0-beta.7

Installing the meteor tool via NPM

npx meteor@beta

16 Likes

In case it is of any use for you I just tried updating a beta.6 project in WSL2 and got this error:

npm ERR! gyp ERR! stack Error: not found: make

Had to manually install build-essential before running the update command again.

sudo apt-get install build-essential

The update then completed without errors.

2 Likes

Hello,
I have updated and I get this error with all my publications. I was not having the error with beta 6.
Something has changed in the check package ?

I20240326-15:44:21.266(1)? Exception from sub tasksForGantt id PTKkQFWB6MFKWRWvM Error: Did not check() all arguments during publisher 'tasksForGantt'
I20240326-15:44:21.266(1)?     at ArgumentChecker.throwUnlessAllArgumentsHaveBeenChecked (packages/check/match.js:515:13)
I20240326-15:44:21.266(1)?     at Object._failIfArgumentsAreNotAllChecked (packages/check/match.js:122:16)
I20240326-15:44:21.266(1)?     at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1987:18)
I20240326-15:44:21.266(1)?     at DDP._CurrentPublicationInvocation.withValue.name (packages/ddp-server/livedata_server.js:1183:11)
I20240326-15:44:21.266(1)?     at EnvironmentVariableAsync.<anonymous> (packages/meteor.js:1288:23)
I20240326-15:44:21.266(1)?     at packages/meteor.js:757:17
I20240326-15:44:21.267(1)?     at AsyncLocalStorage.run (node:async_hooks:346:14)
I20240326-15:44:21.267(1)?     at Object.Meteor._runAsync (packages/meteor.js:754:28)
I20240326-15:44:21.267(1)?     at EnvironmentVariableAsync.withValue (packages/meteor.js:1282:19)
I20240326-15:44:21.267(1)?     at Subscription._runHandler (packages/ddp-server/livedata_server.js:1180:60)
I20240326-15:44:21.267(1)?     at Session._startSubscription (packages/ddp-server/livedata_server.js:991:16)
I20240326-15:44:21.267(1)?     at Session.sub (packages/ddp-server/livedata_server.js:733:18)
I20240326-15:44:21.267(1)?     at runHandlers (packages/ddp-server/livedata_server.js:651:58)
I20240326-15:44:21.267(1)?     at processNext (packages/ddp-server/livedata_server.js:667:7)
I20240326-15:44:21.267(1)?     at Session.processMessage (packages/ddp-server/livedata_server.js:670:5)
I20240326-15:44:21.267(1)?     at SockJSConnection.<anonymous> (packages/ddp-server/livedata_server.js:1561:31)

Thanks

2 Likes

@denyhs maybe something with the changes in the async local storage.

Could you mind checking that out?

1 Like

Hi @dokithonon, I’ll take some time to check this. Thanks for reporting it!

1 Like

Hi,

Same behavior here.

I visit this issue soon. But I wonder if you could provide some reproduction steps on this issue or any additional detail on your app and set up, since we surely have tests covering check usage with basic publications, and tests were not failing. @dokithonon @harry73, Thanks

Anyway, I will just create few publications with check usage and see if I repro this. I will let you know here if I run into the same issue or I would need additional replication steps.

Hello,
Thanks for your help.
I created a simple repo : GitHub - dokithonon/meteor-test-async at meteor-3
But there is no error with the check package on this simple repo.
So there might be something more complex in our app that is causing the error
I can do a screensharing anytime if you want

EDIT :
When I look at the check package I can read this :

  // We use getOrNullIfOutsideFiber so that it's OK to call check()
  // from non-Fiber server contexts; the downside is that if you forget to
  // bindEnvironment on some random callback in your method/publisher,
  // it might not find the argumentChecker and you'll get an error about
  // not checking an argument that it looks like you're checking (instead
  // of just getting a "Node code must run in a Fiber" error).

It really looks like the cause of the error (but I don’t know waht to do with this)

EDIT 2 :
The check is working well in methods. The bug only occurs in publication

1 Like

Why do you call this.unblock() inside publish function?
I don’t know that check() is global function.

Hello,
I read this in the doc a while back and I added this everywhere.
I thought it can speed up the display on my front end

I don’t think you should use it inside publish function.

this.unblock() is available in publications so that long running publications will not block other publications when multiple pubs are called at the same time from the client

3 Likes

I know it works in method but inside publish function is interesting.

Definitely, there is something else going on reproducing this issue.

  • I tested in a small example using check within a publication
  • I tested on your repository, and as you stated. Not issues there.

Could you provide here the packages and versions file you have installed on your app?

@harry73 also experienced this issue. Do you have any more input on this issue?

Thanks for your tests.
Here is my package list

webapp@2.0.0-beta300.7
ostrio:files
blaze-html-templates
accounts-base@3.0.0-beta300.7
accounts-password@3.0.0-beta300.7
jquery@3.0.0!
meteorhacks:inject-initial
matb33:collection-hooks
universe:i18n
rationalk:core
rationalk:fields
rationalk:erp
rationalk:address
rationalk:rh-vacation-requests
rationalk:customer-contracts
rationalk:prices-import
rationalk:inventory
rationalk:activities
rationalk:contacts
rationalk:production-orders
rationalk:events
rationalk:maps
rationalk:bom
rationalk:project
rationalk:project-calendars
rationalk:project-resources
rationalk:project-dashboard
rationalk:project-accounting
rationalk:project-risks
rationalk:project-summary
rationalk:project-import
rationalk:gantt
rationalk:checklists
rationalk:project-pictures
rationalk:project-documentation
rationalk:meeting-minutes
rationalk:kanban
rationalk:kpi
rationalk:cloud-admin
rationalk:tags
rationalk:upload-logo
rationalk:cron
rationalk:widget
rationalk:mail
rationalk:users
rationalk:notifications
rationalk:docs-rights
rationalk:tree-view
rationalk:attachments
rationalk:categories
rationalk:users-roles-import
rationalk:comments
rationalk:bus-event
rationalk:pdf
rationalk:caldav
rationalk:docs-export
rationalk:dashboard-my-documents
rationalk:tasks
rationalk:tasks-import
rationalk:smarttags
rationalk:journal
rationalk:settings
rationalk:bpm
rationalk:docs
rationalk:bookmarks
rationalk:seq-id
rationalk:user-signatures
rationalk:receipts
rationalk:ics-import
rationalk:api
rationalk:category-csv-export
rationalk:search
rationalk:codereader
rationalk:ext
rationalk:google-api
rationalk:license
rationalk:saml
twbs:bootstrap
ecmascript@0.16.8-beta300.7
standard-minifier-css@1.9.3-beta300.7
standard-minifier-js@3.0.0-beta300.7
alanning:roles
meteortesting:mocha
email@3.0.0-beta300.7
fetch@0.1.4-beta300.7
ajduke:bootstrap-tagsinput
ostrio:flow-router-extra
j4507:datatables-bootstrap-3

All rationalk packages are our internal packages and I don’t think they have an impact on this

Version :

accounts-base@3.0.0-beta300.7
accounts-password@3.0.0-beta300.7
ajduke:bootstrap-tagsinput@0.7.1
alanning:roles@4.0.0-alpha.1
aldeed:collection2@4.0.0
aldeed:simple-schema@1.13.1
aldeed:tabular@2.1.2
allow-deny@2.0.0-beta300.7
audit-argument-checks@1.0.8-beta300.7
autoupdate@2.0.0-beta300.7
babel-compiler@7.11.0-beta300.7
babel-runtime@1.5.2-beta300.7
base64@1.0.13-beta300.7
binary-heap@1.0.12-beta300.7
blaze@3.0.0-alpha300.17
blaze-html-templates@3.0.0-alpha300.17
blaze-tools@2.0.0-alpha300.17
boilerplate-generator@2.0.0-beta300.7
caching-compiler@2.0.0-beta300.7
caching-html-compiler@2.0.0-alpha300.17
callback-hook@1.6.0-beta300.7
check@1.3.3-beta300.7
core-runtime@1.0.0-beta300.7
cunneen:signature-pad@1.0.0
ddp@1.4.2-beta300.7
ddp-client@3.0.0-beta300.7
ddp-common@1.4.1-beta300.7
ddp-rate-limiter@1.2.1-beta300.7
ddp-server@3.0.0-beta300.7
diff-sequence@1.1.3-beta300.7
dynamic-import@0.7.4-beta300.7
ecmascript@0.16.8-beta300.7
ecmascript-runtime@0.8.2-beta300.7
ecmascript-runtime-client@0.12.2-beta300.7
ecmascript-runtime-server@0.11.1-beta300.7
ejson@1.1.4-beta300.7
email@3.0.0-beta300.7
es5-shim@4.8.1-beta300.7
facts-base@1.0.2-beta300.7
fetch@0.1.4-beta300.7
geojson-utils@1.0.12-beta300.7
hot-code-push@1.0.5-beta300.7
html-tools@2.0.0-alpha300.17
htmljs@2.0.0-alpha300.17
http@1.4.4
id-map@1.2.0-beta300.7
inter-process-messaging@0.1.2-beta300.7
j4507:datatables-bootstrap-3@0.2.5
jquery@3.0.0
localstorage@1.2.1-beta300.7
logging@1.3.3-beta300.7
matb33:collection-hooks@1.3.1
meteor@2.0.0-beta300.7
meteor-base@1.5.2-beta300.7
meteor-platform@0.0.1
meteorhacks:inject-initial@1.0.3
meteortesting:browser-tests@1.5.3
meteortesting:mocha@2.1.0
meteortesting:mocha-core@8.1.2
minifier-css@2.0.0-beta300.7
minifier-js@3.0.0-beta300.7
minimongo@2.0.0-beta300.7
mizzao:bootboxjs@4.4.0
modern-browsers@0.1.10-beta300.7
modules@0.19.1-beta300.7
modules-runtime@0.13.2-beta300.7
momentjs:moment@2.30.1
mongo@2.0.0-beta300.7
mongo-decimal@0.1.4-beta300.7
mongo-dev-server@1.1.1-beta300.7
mongo-id@1.0.9-beta300.7
mousetrap:mousetrap@1.4.6_1
netanelgilad:moment-business@0.0.1
npm-mongo@4.16.1-beta300.7
observe-sequence@2.0.0-alpha300.17
ordered-dict@1.2.0-beta300.7
ostrio:cookies@2.8.0
ostrio:files@3.0.0-beta.4
ostrio:flow-router-extra@3.10.0
pdftk:pdftk@0.6.0
peppelg:bootstrap-3-modal@1.0.4
promise@1.0.0-beta300.7
raix:eventemitter@1.0.0
random@1.2.2-beta300.7
rate-limit@1.1.2-beta300.7
rationalk:activities@0.0.0
rationalk:address@0.0.0
rationalk:api@0.0.0
rationalk:attachments@0.0.0
rationalk:bom@0.0.0
rationalk:bookmarks@0.0.0
rationalk:bpm@0.0.0
rationalk:bus-event@0.0.0
rationalk:caldav@0.0.0
rationalk:categories@0.0.0
rationalk:category-csv-export@0.0.0
rationalk:checklists@0.0.0
rationalk:cloud-admin@0.0.0
rationalk:codereader@0.0.0
rationalk:comments@0.0.0
rationalk:contacts@0.0.0
rationalk:core@0.0.0
rationalk:cron@0.0.0
rationalk:customer-contracts@0.0.0
rationalk:dashboard-my-documents@0.0.0
rationalk:docs@0.0.0
rationalk:docs-export@0.0.0
rationalk:docs-rights@0.0.0
rationalk:erp@0.0.0
rationalk:events@0.0.0
rationalk:ext@0.0.0
rationalk:fields@0.0.0
rationalk:gantt@0.0.0
rationalk:google-api@0.0.0
rationalk:ics-import@0.0.0
rationalk:inventory@0.0.0
rationalk:journal@0.0.0
rationalk:kanban@0.0.0
rationalk:kpi@0.0.0
rationalk:license@0.0.0
rationalk:mail@0.0.0
rationalk:maps@0.0.0
rationalk:meeting-minutes@0.0.0
rationalk:notifications@0.0.0
rationalk:pdf@0.0.0
rationalk:prices-import@0.0.0
rationalk:production-orders@0.0.0
rationalk:project@0.0.0
rationalk:project-accounting@0.0.0
rationalk:project-calendars@0.0.0
rationalk:project-dashboard@0.0.0
rationalk:project-documentation@0.0.0
rationalk:project-import@0.0.0
rationalk:project-pictures@0.0.0
rationalk:project-resources@0.0.0
rationalk:project-risks@0.0.0
rationalk:project-summary@0.0.0
rationalk:receipts@0.0.0
rationalk:rh-vacation-requests@0.0.0
rationalk:saml@0.0.0
rationalk:search@0.0.0
rationalk:seq-id@0.0.0
rationalk:settings@0.0.0
rationalk:smarttags@0.0.0
rationalk:tags@0.0.0
rationalk:tasks@0.0.0
rationalk:tasks-import@0.0.0
rationalk:tree-view@0.0.0
rationalk:upload-logo@0.0.0
rationalk:user-signatures@0.0.0
rationalk:users@0.0.0
rationalk:users-roles-import@0.0.0
rationalk:widget@0.0.0
react-fast-refresh@0.2.8-beta300.7
reactive-dict@1.3.2-beta300.7
reactive-var@1.0.13-beta300.7
reload@1.3.2-beta300.7
retry@1.1.1-beta300.7
risul:accounting@1.0.1
routepolicy@1.1.2-beta300.7
rzymek:moment-locale-de@2.14.1
rzymek:moment-locale-fr@2.14.1
sergeyt:typeahead@0.0.11
session@1.2.2-beta300.7
sha@1.0.10-beta300.7
shell-server@0.6.0-beta300.7
socket-stream-client@0.5.2-beta300.7
spacebars@2.0.0-alpha300.17
spacebars-compiler@2.0.0-alpha300.17
standard-minifier-css@1.9.3-beta300.7
standard-minifier-js@3.0.0-beta300.7
templating@1.4.4-alpha300.13
templating-compiler@2.0.0-alpha300.17
templating-runtime@2.0.0-alpha300.17
templating-tools@2.0.0-alpha300.17
tracker@1.3.3-beta300.7
tsega:bootstrap3-datetimepicker@4.17.47
twbs:bootstrap@3.3.6
typescript@5.4.3-beta300.7
underscore@1.0.14-beta300.7
universe:i18n@2.1.0
url@1.3.2
webapp@2.0.0-beta300.7
webapp-hashing@1.1.2-beta300.7
zodern:types@1.0.13

Let me know if I can help

Hello,

I did more tests.

if I remove the package audit-argument-checks@1.0.8-beta300.7, all works well.

With the audit-argument-checks package, I have the issue but the check test is working (i.e. passing a Number instead of a String)

2 Likes

This works ! Thanks a lot Harry. Removing audit-argument-checks was the solution.

I would say a workaround :wink:

Thank you for providing more details on this issue.

This package ensures that any parameter passed to your publications must provide a type check, as stated in the documentation

After integrating this package into my example app, we attempted several tests to replicate the issue.

Passing parameters without checks

If you pass a parameter without validating it using a check in the publication body, it will trigger the mentioned error. This package effectively forces you specifying a check, such as check(param, Match.Any) or a more generic check(arguments, [Match.Any]). Properly defining the check should resolve this issue.

Passing a parameter checked as a string

In my publication, I specified two parameters: a number and a string. However, when passing a numeric string from the client’s subscribe call, it throws the same error. It appears that the package does not handle numeric strings well, treating them only as alphanumeric strings.

As depicted in the image below, this time I encountered the aforementioned error along with another validation error.

Is this what you get on your issue? I think this is off and numeric strings should properly be validated.

If you don’t get this other validation logs, it is a different issue. Could you (@harry73, @dokithonon) share the check interface of the afftected publication and how you call it on the client, or try to examplify in a small repo in order to exacly get the issue you get?

1 Like